3.如何实现呢?
说了这么多,只是让大家能够更好地理解阈值二值化操作,还有就是为什么我们选择二值化,她的目的是什么!(不多说了),下面来看一般的阈值二值化函数。
1》典型的全局阈值二值化函数:
代码:
ret,thresh1=cv2.threshold(GrayImage,120,255,cv2.THRESH_BINARY)
how to usse?
代码:
import cv2
path=r'cat.png'
img=cv2.imread(path)
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret1,thresh1=cv2.threshold(GrayImage,120,255,cv2.THRESH_BINARY)
cv2.imshow('method1',thresh1)
cv2.waitKey(0)
效果图:
原图
二值化后的图像
2》自适应阈值分割函数:
代码:
th3 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,11)
how to use?
代码:
import cv2
path=r'cat.png'
img=cv2.imread(path)
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
threth2=cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,11)
cv2.imshow('method2',thhreth2)
cv2.waitKey(0)
效果图:
原图
自适应阈值分割后的图像
3》大津阈值分割法
这个是由日本学者大津提出,当时轰动一时(夸张点)。这种方法最核心的就是统计像素点灰度值的方差,使图像的灰度值方差达到最小值,这个值就是相对于分割图像的最好分割阈值。(求最小方差所对于的值,就是最好的分割阈值,应该说清楚了吧!)
代码:
ret3,threth3= cv2.threshold(img,0,255,cv2.THRESH_OTSU)
how to use?
path=r'cat.png'
img=cv2.imread(path)
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret3,thresh3 = cv2.threshold(GrayImage,0,255,cv2.THRESH_OTSU)
print(ret3)
cv2.imshow('method3',thresh3)
cv2.waitKey(0)
效果展示:
原图
大津阈值分割后的图
注意: 其中 ret3 就是计算出来的最好阈值(相对来说哦)
我们打印输出一下看看是多少?
Original: https://blog.csdn.net/m0_56654441/article/details/120593382
Author: 桀骜不驯的山里男人
Title: 图像处理–阈值分割函数《python基础篇》
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645739/
转载文章受原作者版权保护。转载请注明原作者出处!