OpenCV来控制鼠标移动

这篇日志介绍了如何利用OpenCV来控制鼠标的移动。代码基于AutoCamShift例子,通过::SetCursorPos(_x,_y)函数实现。文章讨论了如何扩展此功能以模拟鼠标点击和右键操作。" 104723333,9352666,Django框架:一步步创建你的第一个项目,"['Python', 'Web开发', 'Django框架', '编程教程']
摘要由CSDN通过智能技术生成

之前的日志“VS2005下配置OpenCV2.1 ” 里介绍了如何在VS2005里安装OpenCV2.1,下面这篇日志里就介绍了下如何使用CV来控制鼠标移动。代码和AutoCamShift例子里的差 不多,只是我进行了许多代码的删减以及我添加稍许注释,另外就是补充了::SetCursorPos(_x,_y)函数。

不太多说废话,C++代码如下:

001 #include "cv.h"
002 #include "highgui.h"
003 #include
004 #include
005  
006 //基本的图像指针
007 IplImage *image = 0
008 , *hsv = 0
009 , *hue = 0
010 , *mask = 0
011 , *backproject = 0
012 , *histimg = 0;
013  
014 //用于直方图
015 CvHistogram *hist = 0;
016  
017 //用于判断
018 int select_object = 0;
019 int track_object = 0;
020 int cursor_object=0;
021  
022 //用于鼠标选择区域
023 CvPoint origin;
024 CvRect selection;
025  
026 //CAMSHIFT算法用到
027 CvRect track_window;
028 CvBox2D track_box;
029 CvConnectedComp track_comp;
030  
031 // 划分HIST的个数,越高越精确
032 int hdims = 48;   
033  
034 //设置HSV的范围(0-180)
035 float hranges_arr[] = {0,180};
036 float * hranges = hranges_arr;
037  
038 void on_mouse( int event, int x, int y, int flags, void * param)
039 {
040      if ( !image )
041          return ;
042  
043      if ( image->origin )
044          y = image->height - y;
045  
046      //左键按下时 select_object=1
047      //右键按下时 select_object=0
048      if ( select_object )
049      {
050          selection.x = MIN(x,origin.x);
051          selection.y = MIN(y,origin.y);
052          selection.width = selection.x + CV_IABS(x - origin.x);
053          selection.height = selection.y + CV_IABS(y - origin.y);
054  
055          selection.x = MAX( selection.x, 0 );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值