当前位置 : 主页 > 编程语言 > c语言 >

OpenCV 鼠标事件

来源:互联网 收集:自由互联 发布时间:2023-09-06
OpenCV的支持检测鼠标事件。这是非常简单的做到这一点。我们可以检测到特定的鼠标事件和鼠标指针(X,Y)坐标在图像坐标(不是窗口坐标), 下面是一个简单的例子,检测鼠标左键


      OpenCV的支持检测鼠标事件。这是非常简单的做到这一点。我们可以检测到特定的鼠标事件和鼠标指针(X,Y)坐标在图像坐标(不是窗口坐标),    

下面是一个简单的例子,检测鼠标左键点击事件和它(X,Y)坐标。


#include "stdafx.h"
#include <cv.h>
#include <highgui.h>


//callback function
void mouseEvent(int evt, int x, int y, int flags, void* param){
    if(evt==CV_EVENT_LBUTTONDOWN){
        printf("%d %d\n",x,y);
    }
}


int main()
{

        cvNamedWindow("MyWindow");

        //assigning the callback function for mouse events
        cvSetMouseCallback("MyWindow", mouseEvent, 0);

        //load and display an image
        IplImage* img = cvLoadImage("C:/MyPic.jpg");
        cvShowImage("MyWindow", img);
        
        //wait for key press
        cvWaitKey(0);
      
        //cleaning up
        cvDestroyWindow("MyWindow");
        cvReleaseImage(&img);
       
        return 0;
}



OpenCV 鼠标事件_鼠标指针




总结


在此应用中,它在图像窗口中检测到鼠标左键按下打印出(X,Y)坐标。   

这里是新的OpenCV的职能 ,在上面的例子。



  • cvSetMouseCallback(“MyWindow命名”,鼠标事件,0)

第一参数是与鼠标事件时,应监测的窗口中的名称。


第二个参数是函数的名称时将调用该鼠标事件发生指定window.This功能的原型如下。  


      无效的MouseEvent(EVT 诠释,诠释,诠释的标志,作废参数)


  • 对于第1个参数,这将是后
  • CV_EVENT_MOUSEMOVE - 当鼠标指针移到指定的窗口
  • CV_EVENT_LBUTTONDOWN -当按下鼠标左键指定窗口
  • CV_EVENT_RBUTTONDOWN - 上按下鼠标右键时
  • CV_EVENT_MBUTTONDOWN - 鼠标的中间按钮时,按下指定的窗口
  • CV_EVENT_LBUTTONUP - 当释 放鼠标左键指定的窗口
  • CV_EVENT_RBUTTONUP - 当鼠标右键释放指定的窗口
  • CV_EVENT _MBUTTONUP - 鼠标的中间按钮被释放时,在指定的窗口



  •  对于第二和第三参数,这将是,如在上面的图像示出的鼠标指针的位置的x和y坐标。
  •   对于第4个参数,这将是后
  • CV_EVENT_FLAG_LBUTTON - 当按下鼠标左键指定的窗口
  • CV_EVENT_FLAG_RBUTTON - 当鼠标右键按下指定的窗口
  • CV_EVENT_FLAG_MBUTTON - 鼠标的中间按钮时,按下指定的窗口
  • CV_EVENT_FLAG_CTRLKEY - 当按下“Ctrl”键,任何鼠标事件发生时,
  • CV_EVENT_FLAG_SHIFTKEY - 'SHIFT'键被按下,任何鼠标事件发生时,
  • CV_EVENT_FLAG_ ALTKEY - 当按下“ALT”键,任何鼠标事件发生时,   



  • 第五个参数是用户定义的参数的第三个参数通过。 



更先进的Visual C + +的范例,
这也是类似上面的例子。但是,这是先进一点点。尝试理解上的差异 和预测 




#include "stdafx.h"
#include <cv.h>
#include <highgui.h>


//callback function
void mouseEvent(int evt, int x, int y, int flags, void* param){
    if(evt==CV_EVENT_MOUSEMOVE && flags==CV_EVENT_FLAG_CTRLKEY){
        printf("%d %d\n",x,y);
    }
}


int main()
{

        cvNamedWindow("MyWindow");

        //assigning the callback function for mouse events
        cvSetMouseCallback("MyWindow", mouseEvent, 0);

        //load and display an image
        IplImage* img = cvLoadImage("C:/MyPic.jpg");
        cvShowImage("MyWindow", img);
        
        //wait for key press
        cvWaitKey(0);
      
        //cleaning up
        cvDestroyWindow("MyWindow");
        cvReleaseImage(&img);
       
        return 0;
}




上一篇:【C语言】C语言指针练级初阶(1)
下一篇:没有了
网友评论