1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import cv2 import matplotlib as plt import numpy as np '''ret,dst = cv2.threshold(src,thresh,maxval,type)''' ''' src = 输入图 dst = 输出图 thresh 阈值 maxval 当前像素超过了阈值(或者小于阈值,根据type决定),所赋予的值 type 二值化操作的类型包含以下五种{
· cv2.THRESH_BINARY 超过阈值部分去maxval(最大值,否则取0) · cv2.THRESH_BINARY_INV (上面的反转) · cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变 · cv2.THRESH_TOZERO 大于阈值部分不变,否则设为0 · cv2.THRESH_TOZERO_INV 上面的反转 } ''' img = cv2.imread("a28.png") ret,THRESH_BINARY = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV,0) ret,THRESH_BINARY_INV = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV,0) ret,THRESH_TRUNCY = cv2.threshold(img,127,255,cv2.THRESH_TRUNC,0) ret,THRESH_TOZERO = cv2.threshold(img,127,255,cv2.THRESH_TOZERO,0) ret,THRESH_TOZERO_INV = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV,0)
#或者这样 title = ['THRESH_BINARY','HRESH_BINARY_INV','THRESH_TRUNCY','THRESH_TOZERO','THRESH_TOZERO_INV'] images = [THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNCY,THRESH_TOZERO,THRESH_TOZERO_INV]
for i in range(5): plt.subplot(3,3,i+1),plt.imshow(images[i],'gray') plt.title(title[i]) plt.xticks([]),plt.yticks([]) plt.show()
|