本节为《OpenCV计算机视觉实战(Python)》版第三讲,阈值与平滑处理,的总结。
ret, dst = cv2.threshold(src, thresh, maxval, type)
白:255
黑:0
ret, thresh1 = cv2.threshold(img_gray, 127,255,cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, 127,255,cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, 127,255,cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, 127,255,cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, 127,255,cv2.THRESH_TOZERO_INV)
titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img,thresh1,thresh2,thresh3, thresh4, thresh5]
for i in range(6):
plt.subplot(2, 3, i + 1), plt.imshow(images[i],'gray')
plt.title(titles[i]) # 图像名称
plt.xticks([]), plt.ysticks([]) # 坐标轴设置
plt.show()
图像平滑也就是常说的滤波操作,这里介绍了:均值、方框、高斯、中值四种滤波方法。
blur = cv2.blur(img, (3,3))
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows(0)
在掩模内,求像素点和的均值。
掩模大小:一般为奇数,33,55,7*7。上述示例中的掩模大小为3 * 3
方框滤波的计算方法与均值滤波一致。
box = cv2.boxFilter(img,-1,(3,3),normalize=TRUE)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()
方框滤波的参数:
- “-1”:Python中的“-1”一般代表不改变,自动的计算,与原始通道数保持一致,通常情况下不需要改变该数值
- (3,3):表示掩模大小为3*3
- normalize = TRUE: 当normalize为TRUE时,即为均值滤波;当其为FALSE时,将像素求和后大于255的像素值置为255
gauss = cv2.GaussianBlur(img, (5,5), 1)
cv2.imshow('gauss',gauss)
cv2.waitKey(0)
cv2.destroyAllWindows()
高斯滤波的思想为:高斯函数,距离原点越近,权重越大。
median = cv2.medianBlur(img, 5)
cv2.imshow('median', median)
cv2.waitKey(0)
cv2.destroyAllWindows()
扩展:图像拼接和展示
np.hstack: 矩阵横向拼接
np.vstack: 矩阵纵向拼接
res = np.hstack(blur,gauss,median)
cv2.imshow('median cv average', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
本文地址:https://blog.csdn.net/lovetaozibaby/article/details/107575045
如对本文有疑问, 点击进行留言回复!!
PAT 甲级真题 1006 Sign In and Sign Out (25分) python实现
OpenCV计算机视觉实战(Python)| 03、阈值与平滑处理
网友评论