本节实现的是在图片上模拟机上椒盐噪声,主要过程如下。
打开一个图片
产生随机坐标
加上“椒盐”
显示加噪图片
实现过程
引用
这里我们需要引用cv2和numpy,cv2不言而喻,而NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
python
import cv2
import numpy
打开图片
cv2库里的函数imread()用来读取图片,imshow()可用于显示图片,此外imwrite可以用来写图片,即保存图片。这里把显示图片的窗口指定为“Image”。
python
img = cv2.imread("test.png")
加
继续阅读 »
本节实现的是使用内建摄像头捕获视频,并保存视频。
创建摄像头对象
逐帧显示实现视频播放
保存摄像头的每一帧图像
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
创建摄像头对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture(0)
定义写入视频格式和写入对象
利用cv2.cv.FOURCC(*'XVID')定义视频格式,然后创建视频写入对象。
``` python
Define the codec and create
继续阅读 »
本节实现的是提取出彩色图像的三个通道。
打开一个彩色图片
利用系统函数分离三通道
自行分离三通道
显示显示三通道图片
实现过程
引用与打开图片
不再赘述,代码如下。
``` python
import cv2
import numpy
img = cv2.imread("test.png")
```
系统函数分离三通道
opencv里自带了分离三通道的函数split(),返回值依次是蓝色、绿色和红色通道的灰度图,代码如下:
python
b, g, r = cv2.split(img)
cv2.imshow("Blue 1", b)
cv2.imshow("Green 1", g)
cv2.imshow("Red
继续阅读 »
本节实现的是读取视频,并显示视频的每一帧以实现视频的播放。
创建摄像头对象,指向文件
逐帧显示实现视频播放
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
创建视频对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture("../test.avi")
逐帧显示实现视频播放
在while循环中,利用视频对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。
pyt
继续阅读 »
xmake通过import接口,可以在自定义脚本中导入各种内置类库和扩展类库模块,使得xmake的插件开发具有更多的灵活性,提供更丰富的功能。
我们先看下,目前xmake提供的一些类库:
.
├── _g.lua
├── assert.lua
├── catch.lua
├── coroutine.lua
├── debug.lua
├── finally.lua
├── format.lua
├── ifelse.lua
├── import
│ └── core
│ ├── base
│ │
继续阅读 »
本节实现的是使用OpenCV里自带的函数,在双击图片时,以其为圆心绘制圆。
回调函数
捕捉鼠标事件
实现过程
引用与创建空图
不再赘述,代码如下。
``` python
import cv2
import numpy
empty image
img = np.zeros((512, 512, 3), np.uint8)
```
设置回调函数
检测鼠标事件,如果左击鼠标则绘制圆。
```python
call back function
def draw_circle(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDBLCLK:
继续阅读 »
本节实现的是提取出灰度图像和彩色图像的直方图。
显示灰度图像的灰度直方图
显示彩色图像各个通道的灰度直方图
在一幅图上显示三个通道的灰度直方图
实现过程
引用与打开图片
不再赘述,代码如下。
``` python
import cv2
import numpy
img1 = cv2.imread("test1.jpg", 0) #灰度图像
img2 = cv2.imread("test2.jpg") #彩色图像
```
灰度图像直方图
opencv里自带了calcHist()函数,可以计算一幅图像中各个像素值出现的次数,其函数的各个参数如下:
python
hist = cv2.calcHist([i
继续阅读 »
本节实现的是使用OpenCV里自带的函数,将一幅logo加到一张图片上去。
提取mask
利用mask生成带logo图片
实现过程
引用与读取图片
不再赘述,代码如下。
``` python
import cv2
import numpy as np
img = cv2.imread('test.png')
logo = cv2.imread('logo.jpg')
cv2.imshow("Img_Original", img)
```
获取mask
先将logo转成黑白,然后设置合适的阈值二值化,使得有内容的部分为黑(0),无内容的部分为白(255),这里使用的阈值为205。
```python
logo_gray
继续阅读 »
本节实现的是使用OpenCV里自带的函数,将两幅图片按照特定的比例融合
实现过程
引用与读取图片
不再赘述,代码如下。
```python
import cv2
import numpy
img1 = cv2.imread('test1.png')
img2 = cv2.imread('test2.png')
```
融合图片
利用addWeighted()函数,将图片1的比例设置为0.6,图片2的0.4,如下:
python
mg_mix = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)
显示图片
分别显示两幅原图和融合后的图片:
```python
cv2.imsh
继续阅读 »
本节实现的是使用OpenCV里自带的函数,对图像进行简单的几何变换。
放大
缩小
平移
旋转
实现过程
读取原图并显示
不再赘述。
``` python
import cv2
import numpy as np
read the original
img = cv2.imread('../test2.jpg')
cv2.imshow('original', img)
```
放大
利用OpenCV自带的resize()函数实现放大与缩小。其声明为:
python
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
其中各个参数的意义如
继续阅读 »