1.读入图像:a = cv2.imread(文件名, [,显示控制参数])
常用参数:cv.IMREAD_UNCHANGED, cv.IMREAD_GRAYSCALE, cv.IMREAD_COLOR
2.显示图像:cv2.imshow(窗口名,图像名)
示例:cv2.imshow('demo',a) cv2.waitKey(2000) cv2.destroyAllWindows()
显示图像a,显示时间为2000毫秒,然后清除所有窗口
3.图像保存:cv2.imwrite(文件地址,文件名)
示例:cv2.imwrite('/home/test.jpg', a)
4.图像缩放:cv2.resize(src, dsize) cv2.resize(src, dsize, fx, fy)
示例:b = cv2.resize(a,(200,200)) 将图像缩放为200*200
b = cv2.resize(a, None, fx=0.5, fy=0.7) 将图像a在x轴方向×0.5,y方向*0.7
5.图像翻转: dst = cv2.flip(src, flipCode)
flipCode取0以x轴为对称轴翻转,大于0以y轴为对称轴,小于0则以x和y为对称轴翻转两次
6.图像类型转换: b = cv2.cvtColor(a,参数)
常用参数:cv2.COLOR_BGR2GRAY cv2.COLOR_GRAY2BGR cv2.COLOR_BGR2RGB
7.图像二值化:retval, dst = cv2.threshold(src, thresh, maxval, type)
retval:阈值 dst:处理结果 src:源图像 thresh:阈值 maxval:最大值 type:类型
常用处理类型:
cv2.THRESH_BINARY:大于阈值置为最大值,小于阈值置为0
cv2.THRESH_BINARY_INV:大于阈值置为0,小于阈值置为最大值
cv2.THRESH_TRUNC:大于阈值的置为阈值,小于阈值的不变
cv2.THRESH_TOZERO_INV:大于阈值置为0,小于阈值不变
cv2.THRESH_TOZERO:大于阈值不变,小于阈值置为0
cv2.THRESH_OTSU、cv2.THRESH_TRIANGLE自适应二值化(自动找阈值),配合以上参数使用
8,图像平滑
均值滤波:b = cv2.blur(a,核大小) 示例:b = cv2.blur(a,(5,5)),一个像素取周围5*5区域像素平均值为新值
方框滤波:b = cv2.boxFilter(a,目标图像深度,核大小,normalize属性)
目标图像深度取-1与原图像一致,normalize表示是否归一化(与均值滤波的区别),归一化则与均值滤波相同,
不归一化则为周围核的和,normalize为1表示归一化,为0表示不归一化,省略表示默认归一化
示例:b = cv2.boxFilter(a,-1,(5,5),normalize=1)
高斯滤波:b = cv2.GaussianBlur(a,ksize,sigmaX), ksize表示核大小,需要为奇数,sigmaX表示x方向方差
示例:b = cv2.GaussianBlur(a,(3,3),0) sigmaX设为0表示为默认值
中值滤波:b = cv2.medianBlur(a,ksize) ksize需要为奇数
示例:b = cv2.medianBlur(a,3)
9.形态学变换
图像腐蚀去除噪声,压缩图像,图像膨胀可以扩充图像
图像腐蚀: dst = cv2.erode(src, kernel, iterations) kernel:卷积核 iterations:迭代次数,iterations省略则默认为1
卷积核生成方法: kernel = np.ones((5,5),np.uint8) 首先导入numpy作为np,示例生成5*5卷积核
示例:kernel = np.ones((5,5),np.uint8) b = cv2.erode(a,kernel,iterations=1)
图像膨胀:dst = cv2.dilate(src, kernel, iterations)
开运算:先腐蚀后膨胀,去除图像噪声,并保持原有形状
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
闭运算:先膨胀后腐蚀,关闭前景物体内部小孔或物体内部小黑点
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE,kernel)
梯度运算:膨胀减去腐蚀,得到图像轮廓
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
礼帽操作:源图像减去开运算图像,得到噪声图像
result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
黑帽操作:闭运算图像减去源图像,得到图像内部小孔或图中小黑点
result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)