程序
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('1.jpg', 0) # 0是第二个参数,将其转为灰度图
img = cv2.medianBlur(img, 5)
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)#二进制阈值化
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)#反二进制阈值化
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)#截断阈值化
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)#阈值化为0
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)#反阈值化为0
ret,thresh6 = cv2.threshold(img,127,255,cv2.THRESH_OTSU)#大津阈值
# 11 为 邻域大小, 2为C值,常数
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, \
cv2.THRESH_BINARY, 11, 2) #阈值取邻域的平均值
th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \
cv2.THRESH_BINARY, 11, 2) #阈值取自邻域的加权和平均值,权重分布为一个高斯函数分布
titles = ['Original', 'THRESH_BINARY','THRESH_BINARY_INV','THRESH_TRUNC','THRESH_TOZERO',
'THRESH_TOZERO_INV','THRESH_OTSU','Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, thresh1,thresh2,thresh3,thresh4,thresh5,thresh6, th2, th3]
for i in range(8):
plt.subplot(3, 3, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
结果
运行前 运行结果
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 或者关注公众号。
编写不易,感谢支持。