本節簡介:
注意:本節的解發布自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在這裡等到使用者拖動滾動條來輸入閾值型別以及閾值的大小,或者是使用者鍵入esc健退出程式。(trackbar_type
,window_name,&
threshold_type
,max_type
,threshold_demo
);createtrackbar
(trackbar_value
,window_name,&
threshold_value
,max_value
,threshold_demo
);
無論何時拖動滾動條,使用者自定義的閾值函式都將會被呼叫。
/**就像你看到的那樣,在這樣的過程中,函式 threshold<> 會接受到5個引數:* @自定義的閾值函式
*/void
threshold_demo
(int
,void*)
程式編譯過後,從正確的路徑中讀取一張。例如,該輸入如下所示:
首先,閾值型別選擇為反二進位制閾值型別。我們希望灰度值大於閾值的變暗,即這一部分畫素的灰度值設定為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。這意味著你可以在自己的程式中使用計算機視覺相關功能,但不必關注具體實現。就像你使用電腦,但並不用關注電腦內部的原理。你唯一需要知道的就是如何使用它。這就...