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...