接着上一次的文章:
social:opencv-python库基础操作(一)zhuanlan.zhihu.com还是用这只猫咪:
进行灰度处理有利于后续操作:
img_gray = cv2.imread("cat.jpg", cv2.IMREAD_GRAYSCALE)
1.最简单的阈值处理
#超过阈值(127)部分,取maxval(255,白色),否则取0(黑色)
ret , thresh1 = cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY)
2.最简单的阈值处理de反转
#为第一种情况的反转
res , thresh2= cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY_INV)
3.截断处理(to_阈值)
#大于阈值部分设置为阈值,否则不变
res, thresh3 = cv2.threshold(img_gray , 127, 255, cv2.THRESH_TRUNC)
4.截断处理(to_zero)
#超过阈值部分不改变,否则为0
res , thresh4 = cv2.threshold(img_gray , 127, 255 , cv2.THRESH_TOZERO)
cv_show("thresh4",thresh4)
5.截断处理的反转(to_zero)
#第四种情况的反转
res , thresh5 = cv2.threshold(img_gray , 127, 255 ,cv2.THRESH_TOZERO_INV)
cv_show("thresh5",thresh5)
接下来介绍,# 图像平滑处理(各种滤波操作)
import cv2
img = cv2.imread("cat.jpg")
1.均值滤波
#简单的平均卷积操作
blur = cv2.blur(img,(3,3))
cv2.imshow("img2", blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.方框滤波
#基本和均值一样,可以选择归一化
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
3.高斯滤波
#高斯滤波
#卷积核里的数值是满足高斯分布的,相当于更加重视中间
aussian = cv2.GaussianBlur(img_cat,(3,3) , 1)
cv2.imshow("aussian" , aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.中值滤波
#该方法对“噪音点”处理效果较好
#中值滤波
#相当于用中值代替
median = cv2.medianBlur(img, 5 )
cv2.imshow("median" , median)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.展示所有的
import numpy as np
res = np.hstack((blur, aussian, median)) #这里是横着展示的
#也可以选择竖着展示
cv2.imshow("blur, aussian, median" , res)
cv2.waitKey(0)
cv2.destroyAllWindows()
(太长了,就不展示出来了)