接着上一次的文章:
https://blog.csdn.net/qq_42839893/article/details/108027070
还是用这只猫咪:
进行灰度处理有利于后续操作:
img_gray = cv2.imread("cat.jpg", cv2.IMREAD_GRAYSCALE)
#超过阈值(127)部分,取maxval(255,白色),否则取0(黑色)
ret , thresh1 = cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY)
#为第一种情况的反转
res , thresh2= cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY_INV)
#大于阈值部分设置为阈值,否则不变
res, thresh3 = cv2.threshold(img_gray , 127, 255, cv2.THRESH_TRUNC)
#超过阈值部分不改变,否则为0
res , thresh4 = cv2.threshold(img_gray , 127, 255 , cv2.THRESH_TOZERO)
cv_show("thresh4",thresh4)
#第四种情况的反转
res , thresh5 = cv2.threshold(img_gray , 127, 255 ,cv2.THRESH_TOZERO_INV)
cv_show("thresh5",thresh5)
import cv2
img = cv2.imread("cat.jpg")
#简单的平均卷积操作
blur = cv2.blur(img,(3,3))
cv2.imshow("img2", blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
#基本和均值一样,可以选择归一化
box = cv2.boxFilter(img , -1 , (3,3) , normalize = True)
cv2.imshow("img3",box)
cv2.waitKey(0)
cv2.destroyAllWindows()
box = cv2.boxFilter(img , -1 , (3,3) , normalize = False)
cv2.imshow("img3",box)
cv2.waitKey(0)
cv2.destroyAllWindows()
#若越界,会直接取255
#高斯滤波
#卷积核里的数值是满足高斯分布的,相当于更加重视中间
aussian = cv2.GaussianBlur(img_cat,(3,3) , 1)
cv2.imshow("aussian" , aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
#该方法对“噪音点”处理效果较好
#中值滤波
#相当于用中值代替
median = cv2.medianBlur(img, 5 )
cv2.imshow("median" , median)
cv2.waitKey(0)
cv2.destroyAllWindows()
import numpy as np
res = np.hstack((blur, aussian, median)) #这里是横着展示的
#也可以选择竖着展示
cv2.imshow("blur, aussian, median" , res)
cv2.waitKey(0)
cv2.destroyAllWindows()
(太长了,就不展示出来了)