Opencv中測試最佳閥值及閥值解釋

2021-06-21 11:48:14 字數 2233 閱讀 4765

本節簡介:

注意:本節的解發布自bradski與kaehler的書籍learning opencv

閾值型別1:二進位制閾值化

閾值型別2:反二進位制閾值化

閾值型別3:截斷閾值化

閾值型別4:閾值化為0

閾值型別5:反閾值化為0

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/highgui/highgui.hpp"

#include

#include

using

namespacecv;

/// 全域性變數定義及賦值

intthreshold_value=0

;int

threshold_type=3

;;int

const

max_value

=255

;int

const

max_type=4

;int

const

max_binary_value

=255

;mat

src,

src_gray

,dst

;char

*window_name

="threshold demo"

;char

*trackbar_type

="type:

\n0: binary

\n1: binary inverted

\n2: truncate

\n3: to zero

\n4: to zero inverted"

;char

*trackbar_value

="value"

;/// 自定義函式宣告

void

threshold_demo

(int

,void*);

/*** @主函式

*/int

main

(int

argc

,char

**argv)}

}/**

* @自定義的閾值函式

*/void

threshold_demo

(int

,void*)

先看一下整個程式的結構:

createtrackbar

(trackbar_type

,window_name,&

threshold_type

,max_type

,threshold_demo

);createtrackbar

(trackbar_value

,window_name,&

threshold_value

,max_value

,threshold_demo

);

在這裡等到使用者拖動滾動條來輸入閾值型別以及閾值的大小,或者是使用者鍵入esc健退出程式。

無論何時拖動滾動條,使用者自定義的閾值函式都將會被呼叫。

/**

* @自定義的閾值函式

*/void

threshold_demo

(int

,void*)

就像你看到的那樣,在這樣的過程中,函式 threshold<> 會接受到5個引數:

程式編譯過後,從正確的路徑中讀取一張。例如,該輸入如下所示:

首先,閾值型別選擇為反二進位制閾值型別。我們希望灰度值大於閾值的變暗,即這一部分畫素的灰度值設定為0。從下圖中可以很清楚的看到這樣的變化。(在原圖中,狗的嘴和眼睛部分比影象中的其他部分要亮,在結果圖中可以看到由於反二進位制閾值分割,這兩部分變的比其他影象的都要暗。原理具體參見本節中反二進位制閾值部分解釋)

現在,閾值的型別選擇為0閾值。在這種情況下,我們希望那些在影象中最黑的畫素點徹底的變成黑色,而其他大於閾值的畫素保持原來的面貌。其結果如下圖所示:

opencv簡介及安裝測試

opencv原本由c 開發,python中也支援開源的opencv庫 pip install upgrade setuptools pip install numpy mateplotlib pip install opencv python 安裝完成後新建乙個指令碼來測試opencv庫是否正常工作...

如何找到壓鑄模具中真空閥的最佳位置?

與砂型和重力鑄造相比,傳統壓鑄件的微觀結構不盡人意,主要原因是高速金屬流在澆口處的噴射,要比金屬緩慢餵入砂型或金屬模具型腔時更容易接觸型腔內的空氣。真空壓鑄工藝的重點是儘量減少這種氣液接觸,因此,將型腔內氣體有效地排出是真空壓鑄模具設計的關鍵。對於壓鑄模具,傳統排氣設計與真空排氣設計並無本質區別,只...

在VS中配置並測試opencv

opencv是乙個計算機視覺庫。它目前有兩個分支2.4.x和3.x,2.4.x版本是經典版本,網上的教程資源大多是關於它的,所以推薦使用2.4.x。這意味著你可以在自己的程式中使用計算機視覺相關功能,但不必關注具體實現。就像你使用電腦,但並不用關注電腦內部的原理。你唯一需要知道的就是如何使用它。這就...