Python調用OpenCV閾值化

這一篇主要有兩點:普通閾值化和自適應閾值化。

1、普通閾值化

普通閾值化用到的函數是cv2.threshold,其函數原型爲:

threshold(src, thresh, maxval, type, dst = None)

其中,type的取值有以下幾種cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、cv2.THRESH_TRUNC、cv2.THRESH_TOZERO、cv2.THRESH_TOZERO_INV,其效果如下:

 

2、自適應閾值化

自適應閾值化的函數原型爲:

adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst = None)

其中adaptiveMethod的取值爲cv2.ADPTIVE_THRESH_MEAN_C:閾值取自相鄰區域的平均值和cv2.ADPTIVE_THRESH_GAUSSIAN_C:閾值取值相鄰區域的加權和,權重爲一個高斯窗口;blockSize是領域的大小;C是一個常數,閾值就等於的平均值或者加權平均值減去這個常數。

src = cv2.imread('lena.bmp', 0)
src1 = cv2.imread('lena.bmp', 0)
cv2.adaptiveThreshold(src, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2, src)
cv2.imshow('ADAPTIVE_THRESH_MEAN_C', src)
cv2.adaptiveThreshold(src1, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2, src1)
cv2.imshow('ADAPTIVE_THRESH_GAUSSIAN_C', src1)
cv2.waitKey(0)
cv2.destroyAllWindows()

發現這個函數比較奇葩,最後一個參數我這裏是用了原圖的變量來儲存,不用一個新變量的原因是我在Python3下用的是OpenCV3.4.1,如果用一個dst代替的化就會報錯,運行的效果如下:

 

秋風悽切傷離,

行客未歸時。

塞外草先衰,

江南雁到遲。

芙蓉凋嫩臉,

楊柳墮新眉。

搖落使人悲,

斷腸誰得知。

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