OpenCV學習筆記之閾值操作

2021-10-06 20:49:33 字數 2058 閱讀 3385

簡單來說,閾值是影象分割的標尺,這個標尺根據閾值型別來確定。

閾值二值化(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_otsuthresh_********(不支援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...