python+opencv閾值


在opencv中提供了閾值操作,給定閾值進行分割圖像

import cv2
import numpy as np 
import matplotlib.pyplot as plt

img_gray=cv2.imread("c:\\Users\\Administrator\\Desktop\\123\\cat2.jpg",cv2.IMREAD_GRAYSCALE)

#>127--->255    <127----->0
ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
#thresh1的反轉
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
#截斷值 >127---變為等於255
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
#大於127不變,小於等於127變為0---to zero
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
#thresh4的反轉
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['original', 'binary','binaty_inv','trunc','tozero','tozero_inv']
images = [img_cat2,thresh1,thresh2,thresh3,thresh4,thresh5]

for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

上圖為讀灰度圖得到的結果,下圖為讀原圖得到的結果。

 

 

 

 上面給了五種方式,上圖第一個為原圖。改變 cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)的參數可得到不同的結果

1、cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY):像素值大於127的值變為255,小於127的變為0。

2、cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV):與1正好相反。

3、ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC):像數值大於127變為255,小於127變為不變。

4、ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO):像數值大於127不變,小於127變為0。

5、ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV):與4相反,像數值大於127變為0,小於127不變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM