在opencv2中,threshold函數可以進行閾值化操作。
double threshold( const Mat& src, Mat& dst, double thresh,double maxVal, int thresholdType );
參數:
src:原圖像。
dst:結果圖像。
thresh:當前閾值。
maxVal:最大閾值,一般為255.
thresholdType:閾值類型,主要有下面幾種:
enum { THRESH_BINARY=0, THRESH_BINARY_INV=1, THRESH_TRUNC=2, THRESH_TOZERO=3, THRESH_TOZERO_INV=4};
THRESH BINARY:二進制閾值,。在運用該閾值類型的時候,先要選定一個特定的閾值量,比如:125,這樣,新的閾值產生規則可以解釋為大於125的像素點的灰度值設定為最大值255,灰度值小於125的像素點的灰度值設定為0。 (value>threshold?255:0)
THRESH BINARY INV:反二進制閾值。設定一個初始閾值如125,則大於125的設定為0,而小於該閾值的設定為255。 (value>threshold?0:255)
THRESH TRUNC:截斷閾值。同樣首先需要選定一個閾值,圖像中大於該閾值的像素點被設定為該閾值,小於該閾值的保持不變。(例如:閾值選取為125,那小於125的閾值不改變,大於125的灰度值(230)的像素點就設定為該閾值)。 (value>threshold?threshold:value)
THRESH TOZERO:閾值化為0。先選定一個閾值,像素點的灰度值大於該閾值的不進行任何改變;像素點的灰度值小於該閾值的,其灰度值全部變為0。 (value>threshold?value:0)
THRESH TOZERO INV:反閾值化為0。原理類似於0閾值,但是在對圖像做處理的時候相反,即:像素點的灰度值小於該閾值的不進行任何改變,而大於該閾值的部分,其灰度值全部變為0。 (value>threshold?0:value)
例:
threshold( src,dst,125,255,0);
