学习OpenCV——鼠标事件(画框)

[cpp] view plain copy

print?

  1. #include "cv.h"
  2. #include "highgui.h"
  3. bool check_line_state=false;
  4. IplImage* workImg;
  5. IplImage* imgshow;
  6. CvRect ROI_rect;
  7. void on_mouse4(int event, int x,int y,int flags,void* param)
  8. {
  9. int thickness=2;
  10. CvPoint p1,p2;
  11. if(event==CV_EVENT_LBUTTONDOWN)
  12. {
  13. //当前鼠标位置(x,y)
  14. ROI_rect.x=x;
  15. ROI_rect.y=y;
  16. check_line_state=true;
  17. }
  18. else if(check_line_state&&event==CV_EVENT_MOUSEMOVE)//鼠标状态
  19. {
  20. cvCopy(workImg,imgshow);//这一步很重要,不断更新显示图像,不然画出的图像如图2所示
  21. p1=cvPoint(ROI_rect.x,ROI_rect.y);
  22. p2=cvPoint(x,y);
  23. cvRectangle(imgshow,p1,p2,CV_RGB(0,255,150),thickness,CV_AA,0);
  24. cvShowImage("image",imgshow);
  25. }
  26. else if(check_line_state&&event==CV_EVENT_LBUTTONUP)
  27. {
  28. check_line_state=false;
  29. cvWaitKey(20);
  30. }
  31. }
  32. int main()
  33. {
  34. workImg=cvLoadImage("D:/Demo.jpg",1);
  35. imgshow=cvCreateImage(cvSize(workImg->width,workImg->height),workImg->depth,workImg->nChannels);
  36. cvCopy(workImg,imgshow);
  37. //cvFlip(imgshow);
  38. ROI_rect.x=ROI_rect.y=0;
  39. cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
  40. cvShowImage("image",imgshow);
  41. cvSetMouseCallback("image",on_mouse4);
  42. cvWaitKey();
  43. cvDestroyWindow("image");
  44. }

图1:                                                                                               图2:

   

from: http://blog.csdn.net/yangtrees/article/details/7573919

时间: 2024-10-12 20:53:01

学习OpenCV——鼠标事件(画框)的相关文章

Opencv鼠标事件

opencv的鼠标事件主要涉及两个函数 回调函数cvSetMouseCallback void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param CV_DEFAULT(NULL)); window_name:鼠标执行的窗口名 on_mouse:每次指定窗口鼠标事件发生时被调用的函数指针 param :传递到回调函数的参数 on_mouse的原型 void Foo(int event

深入学习jQuery鼠标事件

前面的话 鼠标事件是DOM事件中最常用的事件,jQuery对鼠标事件进行了封装和扩展.本文将详细介绍jQuery鼠标事件 类型 鼠标事件共10类,包括click.contextmenu.dblclick.mousedown.mouseup.mousemove.mouseover.mouseout.mouseenter和mouseleave click 当用户按下并释放鼠标按键或其他方式"激活"元素时触发 contextmenu 可以取消的事件,当上下文菜单即将出现时触发.当前浏览器在鼠

GTK进阶学习:鼠标事件

鼠标事件,可以理解为操作鼠标的动作.对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是鼠标事件,还是信号与回调函数的知识点. 信号与回调函数的使用请点击此处. 窗口默认不接收鼠标的操作,需要手动添加让其接收. 设置控件捕获(接收)相应的事件: void gtk_widget_add_events( GtkWidget *widget, gint events ); widget:控件 events:事件类型,它是GdkE

selenium学习:鼠标事件

在WebDriver中鼠标操作的方法封装在ActionChains类中 ActionChains类提供的常用方法: perform():执行所有ActionChains中的存储行为 contextclick() 右击 double_click() 双击 drag_and_drop() 拖动 move_to_element() 鼠标悬停 鼠标右击事件 下面代码中:from selenium.driver import ActionChains  导入提供鼠标操作的ActionChains类 Act

Matlab学习-------GUI鼠标事件响应(鼠标划线实例)

(1)打开GUIDE,添加一个坐标轴并保存 (2)添加鼠标响应事件:鼠标按下事件,鼠标运动事件,鼠标松开事件 (3)对相应事件编写程序 function varargout = guide_m(varargin) % GUIDE_M MATLAB code for guide_m.fig % GUIDE_M, by itself, creates a new GUIDE_M or raises the existing % singleton*. % % H = GUIDE_M returns

Opencv图像识别从零到精通(13)----点线圆矩形与鼠标事件

图像中不可少的元素就是点.线.圆.椭圆.矩形,多边形,同时这些也是物体的特征组成单位,在图像识别中必不可少.所以要首先去认识这个元素怎么定义和使用,同时鼠标是电脑的窗口,我们很多的处理都会用到鼠标.本文主要有下面三个部分: (1) 点.线.圆.椭圆.矩形的基础应用 (2)点.线.圆.椭圆.矩形的进阶应用 (3)鼠标事件 一.点.线.圆.椭圆.矩形的基础应用 绘制点的函数: Point a = Point (600,600); 文字函数putText()函数 void putText( CvArr

Opencv下图像对鼠标事件的响应

直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像,响应在图片上的左键右键消息 // 并显示点击图像的坐标,然后显示出来. // //////////////////////////////////////////////////////////////////////// #include <stdlib.h> #include <stdi

JavaScript学习笔记3之 数组 &amp; arguments(参数对象)&amp; 数字和字符串转换 &amp; innerText/innerHTML &amp; 鼠标事件

一.Array数组 1.数组初始化(Array属于对象类型) 1 /*关于数组的初始化*/ 2 //1.创建 Array 对象--方法1: 3 var arr1=[]; 4 arr1[0]='aa';//给数组元素赋值 5 arr1[1]='bb'; 6 arr1[2]='cc'; 7 arr1[3]='dd'; 8 console.log(arr1);//["aa","bb","cc","dd"] 9 //1.创建 Arra

QT学习小结之鼠标事件

qt鼠标事件所包含的头文件<QMouseEvent>,QMouseEvent中包含了两个坐标,一是全局坐标(globalPos()),即桌面坐标,这个跟Windows下的调用的getCursorPos函数得到的结果一致. 鼠标事件常见的有mousePressEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),下面我就贴上几段代码吧 void Event_test::mouseMoveEvent(QMouseE