【opencv】8.获取鼠标动作(滑轮滚动,左键按下,右键按下,鼠标移动)并进行相应处理
生活随笔
收集整理的這篇文章主要介紹了
【opencv】8.获取鼠标动作(滑轮滚动,左键按下,右键按下,鼠标移动)并进行相应处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
獲取鼠標(biāo)動作進(jìn)行相應(yīng)處理
int main(){cv::imshow("EnvFusion", img); //這里顯示一個窗口/*<!-- 在窗口上進(jìn)行鼠標(biāo)操作就使用 cv::setMouseCallback()--><!-- 可進(jìn)行的操作有 滑輪滾動,左鍵按下,右鍵按下,鼠標(biāo)移動,還可以組合,比如鼠標(biāo)左鍵按下并且鼠標(biāo)移動,就是鼠標(biāo)在窗口中拖動 --><!-- 該函數(shù)也會獲取鼠標(biāo)點(diǎn)擊的x,y -->*/cv::setMouseCallback("EnvFusion", OnMouseAction); }// <!-- 鼠標(biāo)操作回調(diào)函數(shù) -->void OnMouseAction(int event, int x, int y, int flags, void *ustc) {double value;float step = 0.02;switch (event) {case CV_EVENT_MOUSEWHEEL:value = cv::getMouseWheelDelta(flags);if (value > 0)map_scale = map_scale * 0.9;else if (value < 0)map_scale = map_scale * 1.1;if (map_scale > 20) map_scale = 20;if (map_scale < 0.05) map_scale = 0.05;break;case CV_EVENT_LBUTTONDOWN:MousePress(x, y);map_down = true;prept = cv::Point(x, y);break;case CV_EVENT_LBUTTONUP:map_down = false;break;default:break;}if (map_down == true && event == CV_EVENT_MOUSEMOVE) //左鍵按下且鼠標(biāo)移動{cv::Point curpt = cv::Point(x, y);cv::Point dpoint0 = curpt - prept;dpoint += dpoint0;prept = curpt;} else {dpoint = cv::Point(0, 0);}} void MousePress(int x, int y) {<!-- 這里的x,y是傳進(jìn)來的鼠標(biāo)點(diǎn)擊位置的坐標(biāo) --><!-- 一般是用來判斷鼠標(biāo)點(diǎn)擊的坐標(biāo)(x,y)是不是在某個范圍內(nèi),是的話就進(jìn)行某種操作 --> }總結(jié)
以上是生活随笔為你收集整理的【opencv】8.获取鼠标动作(滑轮滚动,左键按下,右键按下,鼠标移动)并进行相应处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【opencv】7. cv::Video
- 下一篇: 【opencv】9.批量命名图片文件st