0009-利用setMouseCallback函式實現滑鼠對圖片視窗的操作!
阿新 • • 發佈:2018-11-14
本程式實現滑鼠對圖片視窗的操作。
本程式利用setMouseCallback函式將影象視窗與對應的滑鼠處理函式對映起來!
在這個程式中:
①當滑鼠左鍵在影象上某點點選時,顯示這個點的座標,並在影象上該點處劃圓;
②當滑鼠左鍵沒有按下時,滑鼠移動時,則會顯示滑鼠所在點的實時座標;
③當滑鼠左鍵按下不放並且滑鼠移動時,則在影象上劃矩形,當滑鼠放開後,則會把相應的矩形區域提取出來顯示在另一個視窗中。程式比較簡單,這裡就不用文字說明怎麼實現了,大家一看程式碼便知怎麼用了!
程式碼如下:
程式碼中用到的影象下載連結:http://pan.baidu.com/s/1miSMDmg 密碼:rhs5
//opencv版本:OpenCV3.0 //VS版本:VS2013 //Author:qxsf321.net #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/imgproc/types_c.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/highgui/highgui_c.h> #include <iostream> using namespace cv; cv::Mat org, dst, img, tmp; void on_mouse(int event, int x, int y, int flags, void *ustc)//event滑鼠事件代號,x,y滑鼠座標,flags拖拽和鍵盤操作的代號 { //on_mouse函式的程式碼請搜尋公眾號"qxsf321",關注後回覆0009即可獲取 //on_mouse函式的程式碼請搜尋公眾號"qxsf321",關注後回覆0009即可獲取 //on_mouse函式的程式碼請搜尋公眾號"qxsf321",關注後回覆0009即可獲取 } void main() { org = imread("1.jpg"); org.copyTo(img); org.copyTo(tmp); namedWindow("img");//定義一個img視窗 setMouseCallback("img", on_mouse, 0);//呼叫回撥函式 imshow("img", img); cv::waitKey(0); }
程式碼執行結果我這裡錄了個視訊,視訊線上觀看連結:
https://v.youku.com/v_show/id_XMjk3MTYyMjM3Ng==.html?spm=a2h3j.8428770.3416059.1
大家在看視訊的時候記得選擇高清模式哦!
不方便線上看的我給大家這個視訊的網盤下載連結:
連結:http://pan.baidu.com/s/1geYgrlx 密碼:db75