首钢建设一公司网站,表情包制作在线,做网站那个公司好,手机商城系统总结图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src#xff1a; 输入图#xff0c;只能输入单通道图像#xff0c;通常来说为灰度图dst#xff1a; 输出图thresh#xff1a; 阈值maxval#xff1a; 当像素值超过了阈值#xff08;或者小于阈值#xff0c;…图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src 输入图只能输入单通道图像通常来说为灰度图dst 输出图thresh 阈值maxval 当像素值超过了阈值或者小于阈值根据type来决定所赋予的值type二值化操作的类型包含以下5种类型cv2.THRESH_BINARY 超过阈值部分取maxval最大值否则取0cv2.THRESH_BINARY_INV THRESH_BINARY的反转cv2.THRESH_TRUNC 大于阈值部分设为阈值否则不变cv2.THRESH_TOZERO 大于阈值部分不改变否则设为0cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转python代码及其效果图如下import cv2 #opencv读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline imgcv2.imread(E:/opencv/open-cv/2-7/dog.jpg)
img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)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.yticks([])
plt.show()设置阈值画出对应图像如下图可以看出不同的type其得到的图差距很大。图像平滑处理2.1 读取图像读取了加噪声的图像方便后面比较。img cv2.imread(E:/opencv/open-cv/2-7/lenaNoise.png)cv2.imshow(img, img)
cv2.waitKey(0)
cv2.destroyAllWindows()2.2 均值滤波cv2.blur(img,ksize) 均值滤波img原图像ksize核大小原理它只取内核区域下所有像素的平均值并替换中心元素。特征核中区域贡献率相同。作用滤除椒盐噪声效果比较好。blur cv2.blur(img, (3, 3))cv2.imshow(blur, blur)
cv2.waitKey(0)
cv2.destroyAllWindows()对比原来其效果如图所示2.3 方框滤波cv2.boxFilter(img,-1,ksize,normalizeTrue)注意函数区别当normalizeTrue时与均值滤波结果相同 normalizeFalse表示对加和后的结果不进行平均操作大于255的使用255表示。box cv2.boxFilter(img,-1,(3,3), normalizeTrue) cv2.imshow(box, box)
cv2.waitKey(0)
cv2.destroyAllWindows()normalizeTruenormalizeFalse其效果对比如如上所示。2.4 高斯滤波cv2.GuassianBlur(img, ksize,sigmaX,sigmaY) 其中sigmaX,sigmaY分别表示X,Y方向的标准偏差。如果仅指定了sigmaX则sigmaY与sigmaX相同。aussian cv2.GaussianBlur(img, (5, 5), 1) cv2.imshow(aussian, aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()2.5 中值滤波cv2.medianBlur(img, k)原理imgs为原图像k为方框的尺寸相当于将方框内的个值进行排序取中值作为当前值。python程序和效果图如下median cv2.medianBlur(img, 5) # 中值滤波cv2.imshow(median, median)
cv2.waitKey(0)
cv2.destroyAllWindows()2.6 四种滤波算法对比python代码和图像如下res np.hstack((blur,box1,aussian,median))
#print (res)
cv2.imshow(median vs average, res)
cv2.waitKey(0)
cv2.destroyAllWindows()