python图像二值化处理
一、图像二值化
图像二值化是指将图像上像素点的灰度值设定为0或255,即整个图像呈现明显的黑白效果的过程。
二、python图像二值化处理
1.opencv简单阈值cv2.threshold
2.opencv自适应阈值cv2.adaptiveThreshold
有两种方法可用于计算自适应阈值:mean_c和guassian_c
3.Otsu's二值化
三、示例:
importcv2
importnumpyasnp
frommatplotlibimportpyplotasplt
img=cv2.imread('scratch.png',0)
#globalthresholding
ret1,th1=cv2.threshold(img,127,255,cv2.THRESH_BINARY)
#Otsu'sthresholding
th2=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
#Otsu'sthresholding
#阈值一定要设为0!
ret3,th3=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#plotalltheimagesandtheirhistograms
images=[img,0,th1,img,0,th2,img,0,th3]
titles=[
'OriginalNoisyImage','Histogram','GlobalThresholding(v=127)',
'OriginalNoisyImage','Histogram',"AdaptiveThresholding",
'OriginalNoisyImage','Histogram',"Otsu'sThresholding"
]
#这里使用了pyplot中画直方图的方法,plt.hist,要注意的是它的参数是一维数组
#所以这里使用了(numpy)ravel方法,将多维数组转换成一维,也可以使用flatten方法
#ndarray.flat1-Diteratoroveranarray.
#ndarray.flatten1-Darraycopyoftheelementsofanarrayinrow-majororder.
foriinrange(3):
plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
plt.title(titles[i*3]),plt.xticks([]),plt.yticks([])
plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
plt.title(titles[i*3+1]),plt.xticks([]),plt.yticks([])
plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
plt.title(titles[i*3+2]),plt.xticks([]),plt.yticks([])
plt.show()
以上内容为大家介绍了python图像二值化处理,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!