一、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