VS2010下opencv閾值操作

2021-08-27 03:07:41 字數 1731 閱讀 9159

opencv演算法是值得單獨拿出來學習的,opencv包含很多模組,如calib3d模組、imgproc影象處理模組、ml機器學習模組等等。今天算是乙個開始,學習將opencv中幾種閾值操作改變引數動態顯示(createtrackbar)

**可參考博主@it1995

我也是跟著博主@it1995在學習

今天就講下自己的理解

**這麼寫,可以

int main()

但是也能做很大改進,如下:

#define window_name "效果圖"

mat srcimage,grayimage,dstimage;

int nthresholdvalue = 100;

int nthresholdtype = 3;

void on_threshold(int,void*)

int main()

cvtcolor(srcimage,grayimage,color_rgb2gray);

namedwindow(window_name);

namedwindow("原圖");

imshow("原圖",srcimage);

createtrackbar("模式",window_name,&nthresholdtype,4,on_threshold);

createtrackbar("引數值",window_name,&nthresholdvalue,255,on_threshold);

on_threshold(0,0);

waitkey(0);

return 0;

}其中有點不好理解的就是createtrackbar(),和 on_threshold(int,void*),此時可以選中createtrackbar,轉到定義,就能夠看到它的函式原型

int createtrackbar(const string& trackbarname, const string& winname,

int* value, int count,

trackbarcallback onchange = 0,

void* userdata = 0);

其中第5個引數,在該函式原型**到highgui.hpp檔案中)的上面一行就有定義

void (cv_cdecl *trackbarcallback)(int pos, void* userdata); 簡化下 void *** (int , void*)

這就可以理解為什麼on_threshold(int,void*)的形參是這樣了,

另外,因為視窗名const string& winname 這裡用了全域性變數 #define window_name,所以createtrackbar()中最後乙個引數userdata可以省略。

最後附上效果圖

可以看到模式從0~4變化

選中threshold 轉到定義,進到imgproc.hpp檔案中

double threshold( inputarray src, outputarray dst,

double thresh, double maxval, int type );

// ! type of the threshold operation

enum ;

可以看到有7種閾值操作,二值化閾值、反二值化閾值、截斷、小於thresh閾值的置零.、模板、 ostu閾值

vs2010下安裝配置opencv2 4 8

note d opencv可以為任意自己希望opencv安裝的路徑,解壓完成後,會在你所填目錄中新增乙個 opencv資料夾,裡面就是opencv的所有內容了。例如按照我的路徑,解壓完成後opencv就在d opencv 裡面了。在系統變數裡面新建變數,名為 opencv 值為自己解壓opencv路...

vs 2010與opencv下的錯誤處理

如果vs2010 link fatal error lnk1123 轉換到 coff 期間失敗 檔案無效或損壞 解決方案 c program files microsoft visual studio 10.0 vc binc windows winsxs x86 netfx cvtres for ...

opencv在vs2010下的安裝和使用

下圖是解壓後的opencv檔案 以下內容都是build資料夾裡的內容 一 設定環境變數 我的電腦 右鍵 屬性 高階 環境變數 在使用者變數裡,新建path和opencv兩個項 步驟1 在path中新增d opencv build x86 vc10 bin,就是新增dll檔案 步驟2 新增opencv...