簡單來說,閾值是影象分割的標尺,這個標尺根據閾值型別來確定。
閾值二值化(threshold binary):thresh_binary
,規定某個閾值,當畫素值大於這個閾值的時候為255,當畫素值小於這個閾值的時候為0。
閾值反二值化(threshold binary inverted)thresh_binary_iny
,規定某個閾值,當畫素值小於這個閾值的時候為255;當畫素值大於這個閾值的時候為0。
截斷(truncate)thresh_trunc
,規定某個閾值,當畫素值超過這個閾值的時候取這個畫素值和閾值相等;當畫素值小於這個值的時候不變。
閾值取零(threshold zero)thresh_tozero
,規定某個閾值,當畫素值大於這個閾值的時候,畫素值保持不變;當畫素值小於這個值的時候為0。
閾值反取零(threshold to zero inverted)thresh_tozero_inv
,規定某個閾值,當畫素值大於這個閾值的時候為0;當畫素值小於這個值的時候,畫素值保持不變。
opencv中提供了兩種尋找最佳閾值的方法:thresh_otsu
和thresh_********
(不支援32位)作為優化演算法配合上面提到的5種閾值方法來使用的。當使用了這兩個標誌時,輸入影象必須為單通道。
threshold(gray_src, dst, threshold_value, threshold_max, thresh_binary);
gray_src表示輸入的灰度影象;dst表示輸出影象;threshold_value表示設定閾值;threshold_max表示設定的輸出影象中的最大畫素值;thresh_binary表示閾值型別(0:二值化;1:反二值化;2:截斷;3:取零;4:反取零)
#include
#include
#include
using namespace cv;
using namespace std;
mat src, dst, gray_src;
int threshold_value =
127;
int threshold_max =
255;
const
char
* output_title =
"binary image"
;int type_value =2;
int type_max =4;
void
threshold_demo
(int
,void*)
;int
main
(int argc,
char
** ar**)
imshow
("原圖"
, src)
;namedwindow
("閾值二值化"
, window_autosize)
;createtrackbar
("閾值拖動"
,"閾值二值化"
,&threshold_value, threshold_max, threshold_demo)
;createtrackbar
("閾值型別"
,"閾值二值化"
,&type_value, type_max, threshold_demo)
;threshold_demo(0
,0);
waitkey(0
);return0;
}void
threshold_demo
(int
,void*)
閾值127,閾值型別2(閾值截斷)的輸出結果如下:
opencv學習筆記十一 閾值操作
閾值操作型別有 thresh binary 0 二值化,大於閾值的為255,小於閾值的為0 thresh binary inv 1 反二值化,大於閾值的為0,小於閾值的為255 thresh trunc 2 截斷法,大於閾值的取閾值,小於閾值的不變 thresh tozero 3 大於閾值的不變,小...
1 10opencv學習筆記之基本閾值操作
一.影象閾值 threshold 的概念 閾值 是什麼?簡單點說是把影象分割的標尺,這個標尺是根據什麼產生的,閾值產生演算法?閾值型別 二.型別 1.閾值二值化 threshold binary 左下方的圖表示影象畫素點src x,y 值分布情況,藍色水平線表示閾值。2.閾值反二值化 thresho...
Opencv學習筆記 4 基本閾值操作
閾值是什麼?簡單點說是把影象分割的標尺,這個標尺是根據什麼產生的,閾值產生演算法?閾值型別。binary segmentation 1.閾值二值化 threshold binary 左下方的圖表示影象畫素點src x,y 值分布情況,藍色水平線表示閾值 2.閾值反二值化 threshold bina...