一、Threshold()的用法:
输入的是一个灰度图。阈值可以手动给出也可以由算法寻找到。maxval == 255 。
ret,dst = cv.threshold(src,127,255,cv.THRESH_BINARY)
注意有两个接收值。参数分别为(灰度图、阈值、最大值、二值分割方法)
可以用trackbar来调整阈值:
import cv2 as cv
import numpy as np
def do_nothing(values):
print(values)
def binary_demo():
src = cv.imread("D:/pythonTest/img/1.jpg",cv.IMREAD_GRAYSCALE)
cv.namedWindow("input",cv.WINDOW_AUTOSIZE)
cv.imshow("input",src)
cv.createTrackbar("threshold","input",0,255,do_nothing)
t = 127
while(True):
ret,dst = cv.threshold(src,t,255,cv.THRESH_BINARY)
cv.imshow("output",dst)
t = cv.getTrackbarPos("threshold","input")
c = cv.waitKey(10)
if (c == 27):
break
if __name__ == "__main__":
binary_demo()
cv.waitKey(0)
cv.destroyAllWindows()
OpenCV中常见的二分类方法有:
1、THRESH_BINARY
2、THRESH_BINARY_INV
3、THRESH_TRUNC
4、THRESH_TOZERO
5、THRESH_TOZERO_INV
INV 的取反也可以用bitwise_not来实现,例如:
ret,dst = cv.threshold(src,127,255,cv.THRESH_BINARY)
cv.bitwise_not(dst,dst)
就相当于用了THRESH_BINARY_INV