opencv中采用利用cv2.threshhold()函數進行簡單門檻值分割
cv2.threshhold()函數參數:
第一個參數為原圖像;
第二個參數為門檻值大小;
第三個參數為大于門檻值時,指派的像素值
第四個參數是門檻值分割方法
門檻值分割方法有五種:
cv2.THRESH_BINARY
cv2.THRESH_BINARY_INV
cv2.THRESH_TRUNC
cv2.THRESH_TOZERO
cv2.THRESH_TOZERO_INV
示例如下所示:
大于127像素值的全部指派為255(白色)
代碼如下:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('4.jfif',0) #0是第二個參數,将其轉為灰階圖
#利用cv2.threshhold()函數進行簡單門檻值分割,第一個參數是待分割圖像,第二個參數是門檻值大小
#第三個參數是指派的像素值,第四個參數是門檻值分割方法
ret,thresh1=cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2=cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3=cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5=cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in xrange(6):
plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks(),plt.yticks([]) #顯示坐标軸,如為空,則無坐标軸
plt.show()
運作結果如下所示:
