像素是在模拟图像数字化时对连续空间进行离散化得到的。每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值。
threshold函数
二值化阈值处理(cv2.THRESH_BINARY)
反二值化阈值处理(cv2.THRESH_BINARY_INV)
截断阈值化处理(cv2.THRESH_TRUNC))
超阈值零处理(cv2.THRESH_TOZERO_INV)
低阈值零处理(cv2.THRESH_TOZERO)
自适应阈值处理
dst2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)
加上img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)后成功运行。
img = cv2.imread("p7.jpg") t,rst = cv2.threshold(img,200,255,cv2.THRESH_BINARY) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) dst2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3) dst = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 3) cv2.imshow("r",dst) cv2.imshow("r2",dst2) print(img) #

OTSU处理
在 OpenCV 中,通过在函数 cv2.threshold()中对参数 type 的类型多传递一个参数“cv2.THRESH_OTSU”,即可实现Otsu方式的阈值分割。 需要说明的是,在使用Otsu方法时,要把阈值设为0。此时的函数cv2.threshold()会自动寻找最优阈值,并将该阈值返回。例如,下面的语句让函数cv2.threshold()采用Otsu方法进行阈值分割:
t,otsu=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 与普通阈值分割的不同之处在于:
● 参数type增加了一个参数值“cv2.THRESH_OTSU”。
● 设定的阈值为0。
● 返回值t是Otsu方法计算得到并使用的最优阈值。 需要注意,如果采用普通的阈值分割,返回的阈值就是设定的阈值。
实例:
img = cv2.imread("p7.jpg",0) t,rst = cv2.threshold(img,200,255,cv2.THRESH_BINARY) tt,rst2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202450.html原文链接:https://javaforall.net
