pycharm+win7环境
opencv3+python3
在图形图像处理中, 经常要进行目标物体的选取,或进行变换或计算, 或取消噪音,通过设定阈值进行转换是常用的方法.根据官网opencv库提供了THRESH_BINARY, THRESH_BINARY_INV ,THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV几种方法可以直接使用.下2图取自opencv官网.cv.threshold() 参数: 源, 阈值, 高于或低于阈值设置值, 阈值类型
代码:import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltimg = cv.imread('c:\\meiping.jpg')gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)ret,thresh1 = cv.threshold(gray,127,255,cv.THRESH_BINARY)ret,thresh2 = cv.threshold(gray,127,255,cv.THRESH_BINARY_INV)ret,thresh3 = cv.threshold(gray,127,255,cv.THRESH_TRUNC)ret,thresh4 = cv.threshold(gray,127,255,cv.THRESH_TOZERO)ret,thresh5 = cv.threshold(gray,127,255,cv.THRESH_TOZERO_INV)titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']images = [gray,thresh1,thresh2,thresh3,thresh4,thresh5]#Original Image 灰度图plt.subplot(1,2,1),plt.imshow(images[0], 'gray')plt.subplot(1, 2, 2),plt.hist(images[0].ravel(), 256, [0, 256])plt.title(titles[0])plt.xticks([]),plt.yticks([])plt.show()
#BINARYplt.subplot(1,2,1),plt.imshow(images[1], 'gray')plt.subplot(1, 2, 2),plt.hist(images[1].ravel(), 256, [0, 256])plt.title(titles[1])plt.xticks([]),plt.yticks([])plt.show()
#BINARY_INVplt.subplot(1,2,1),plt.imshow(images[2], 'gray')plt.subplot(1, 2, 2),plt.hist(images[2].ravel(), 256, [0, 256])plt.title(titles[2])plt.xticks([]),plt.yticks([])plt.show()
#TRUNCplt.subplot(1,2,1),plt.imshow(images[3], 'gray')plt.subplot(1, 2, 2),plt.hist(images[3].ravel(), 256, [0, 256])plt.title(titles[3])plt.xticks([]),plt.yticks([])plt.show()
#TOZEROplt.subplot(1,2,1),plt.imshow(images[4], 'gray')plt.subplot(1, 2, 2),plt.hist(images[4].ravel(), 256, [0, 256])plt.title(titles[4])plt.xticks([]),plt.yticks([])plt.show()
#TOZERO_INVplt.subplot(1,2,1),plt.imshow(images[5], 'gray')plt.subplot(1, 2, 2),plt.hist(images[5].ravel(), 256, [0, 256])plt.title(titles[5])plt.xticks([]),plt.yticks([])plt.show()
在实际应用中可以根据'实际情况设置阈值,获得需要的效果.
pycharm+win7环境 opencv3+python3
cv.threshold() 参数: 源, 阈值, 高于或低于阈值设置值, 阈值类型