二值圖像

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章