前面介紹了五種閾值分割的方法,現在就是使用thrershold函數進行實現。
retval, dst = cv2.threshold(src, thresh, maxval, type) //retval,閾值。一般thresh指定的是多少,trtval就是多少。
//dst,結果圖像。
//src,源圖像。
//thresh,閾值分割的時候閾值是多少。
//maxval, 最大值。
//type,類型。哪種類型分割。
一、二進制閾值化
比較暗的變黑色,比較亮的變白色。
![]()
例:
'''
二進制閾值化
'''
import cv2
image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(image,128,255,cv2.THRESH_BINARY) #二進制閾值化
cv2.imshow("image", image)
cv2.imshow("result", b)
cv2.waitKey()
cv2.destroyAllWindows()
|
結果:
![]()
變成黑白的。比較暗的變黑色,比較亮的變白色。
二、反二進制閾值化
比較暗的變白色,比較亮的變黑色。
![]()
例:
'''
反二進制閾值化
'''
import cv2
image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(image,128,255,cv2.THRESH_BINARY_INV) #反二進制閾值化
cv2.imshow("image", image)
cv2.imshow("result", b)
cv2.waitKey()
cv2.destroyAllWindows()
|
結果:
![]()
變成黑白的。比較暗的變白色,比較亮的變黑色。
三、截斷閾值化
比較暗的顏色沒有變。比較亮的顏色都變成了127。
![]()
例:
'''
截斷閾值化
'''
import cv2
image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(image,128,255,cv2.THRESH_TRUNC) #截斷閾值化
cv2.imshow("image", image)
cv2.imshow("result", b)
cv2.waitKey()
cv2.destroyAllWindows()
|
結果:
![]()
可以看到,比較亮的顏色都變成了127。比較暗的顏色沒有變。
四、閾值化爲0
比較亮的不變,比較暗的處理爲黑色。
![]()
例:
'''
閾值化爲0
'''
import cv2
image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(image,128,255,cv2.THRESH_TOZERO) #閾值化爲0
cv2.imshow("image", image)
cv2.imshow("result", b)
cv2.waitKey()
cv2.destroyAllWindows()
|
結果:
![]()
比較亮的不變,比較暗的處理爲黑色。
五、反閾值化爲0
比較暗的不變,比較亮的處理成黑色。
![]()
例:
'''
反閾值化爲0
'''
import cv2
image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(image,128,255,cv2.THRESH_TOZERO_INV) #反閾值化爲0
cv2.imshow("image", image)
cv2.imshow("result", b)
cv2.waitKey()
cv2.destroyAllWindows()
|
結果:
![]()
比較亮的處理成黑色,比較暗的不變。
|