OpenCV之响应鼠标(三):响应鼠标信息
转自:http://blog.csdn.net/haihong84/article/details/6599838
程序代碼如下:
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
void onMouse(int event,int x,int y,int flags,void* param );
int main(int argc, char** argv)
{
CvCapture *capture;
IplImage *frame;
capture =cvCaptureFromCAM(0) ;
cvNamedWindow("Webcam",0);
cvSetMouseCallback("Webcam",onMouse,NULL);
while(true)
{
frame = cvQueryFrame(capture);
cvShowImage("Webcam",frame);
if(cvWaitKey(10)>=0)
{
break;
}
}
cvReleaseCapture(&
capture);
cvDestroyWindow("Webcam");
return 0;
}
void onMouse(int Event,int x,int y,int flags,void* param )
{
printf("( %d, %d) ",x,y);
printf("The Event is : %d ",Event);
printf("The flags is : %d ",flags);
printf("The param is : %d\n",param);
}
1.點擊(Click)
2.放開(Down)
因此,程式執行滑鼠在點擊的時候onMouse()都會連續跑三次,代表滑鼠在點擊的時候連續的三個事件,而
void onMouse(int Event,int x,int y,int flags,void* param ) 副程式的引數分成四個不同的分類,分別為
1.事件回傳代號(int Event)
2.座標(int x,int y)
3.flags代號(int flags)
Event代表的是滑鼠回傳的事件號碼,每當滑鼠有動作,Event就會回傳一個整數訊息到onMouse(),也順便回傳滑鼠移動的座標,flags代表的是拖曳事件,param則是自己定義onMouse()事件的ID,就跟GUI介面的視窗介面ID一樣(cvGetWindowHandle()),不過這邊是自己給的編號,而視窗介面的ID則是系統自動隨機分配的ID,而滑鼠事件的執行可以細分的分類為
Event:
#define CV_EVENT_MOUSEMOVE 0 滑動
#define CV_EVENT_LBUTTONDOWN 1 左鍵點擊
#define CV_EVENT_RBUTTONDOWN 2 右鍵點擊
#define CV_EVENT_MBUTTONDOWN 3 中鍵點擊
#define CV_EVENT_LBUTTONUP 4 左鍵放開
#define CV_EVENT_RBUTTONUP 5 右鍵放開
#define CV_EVENT_MBUTTONUP 6 中鍵放開
#define CV_EVENT_LBUTTONDBLCLK 7 左鍵雙擊
#define CV_EVENT_RBUTTONDBLCLK 8 右鍵雙擊
#define CV_EVENT_MBUTTONDBLCLK 9 中鍵雙擊
flags:
#define CV_EVENT_FLAG_LBUTTON 1 左鍵拖曳
#define CV_EVENT_FLAG_RBUTTON 2 右鍵拖曳
#define CV_EVENT_FLAG_MBUTTON 4 中鍵拖曳
#define CV_EVENT_FLAG_CTRLKEY 8 (8~15)按Ctrl不放事件
#define CV_EVENT_FLAG_SHIFTKEY 16 (16~31)按Shift不放事件
#define CV_EVENT_FLAG_ALTKEY 32 (32~39)按Alt不放事件
上面的#define是OpenCV自行定義的參數,要做事件捕捉的時候,可以用參數,亦可以用純數字表示.簡單的介紹mouse相關的東西.
cvSetMouseCallback()
滑鼠事件呼叫函式,需要給它一個Handler,也就是事件驅動的副程式名稱,Handler必須要符合void xxx(int event,int x,int y,int flags,void* param )格式.
cvSetMouseCallback("視窗名稱",自行定義副程式名稱,自行定義副程式名稱的ID);
onMouse()
void xxx(事件訊息整數代號,滑鼠x軸座標,滑鼠y軸座標,拖曳事件訊息整數代號,自行給予xxx這副程式的ID編號)
版权声明:本文为博主原创文章,未经博主允许不得转载。
OpenCV之响应鼠标(三):响应鼠标信息的更多相关文章
- Opencv函数setMouseCallback鼠标事件响应
用户通过鼠标对图像视窗最常见的操作有: 1. 左键单击按下 2. 左键单击抬起 3. 左键按下拖动 4. 鼠标指针位置移动 单次单击操作响应事件及顺序 Opencv中setMouseCallback( ...
- 第六章 Windows应用程序对键盘与鼠标的响应 P121 6-8
基于键盘与鼠标应用的程序设计 一.实验目的 1.掌握键盘与鼠标在应用程序中的消息响应机制. 二.实验内容及步骤 实验任务 1.熟悉键盘的消息响应: 2.熟悉鼠标的消息响应: 实验内容 设计一个窗口 ...
- OpenGL 鼠标交互响应事件
OpenGL 鼠标.键盘交互响应事件 先来一个样例: uses gl,glu,glut; procedure InitEnvironment;cdecl; begin glClearColor();/ ...
- DuiLib事件分析(一)——鼠标事件响应
最近在处理DuiLib中自定义列表行元素事件,因为处理方案得不到较好的效果,于是只好一层一层的去剥离DuiLib事件是怎么来的,看能否在某一层截取消息,自己重写. 我这里使用CListContaine ...
- HTML5 精灵8方向移动+背景滚动+音效播放+鼠标事件响应
如何清空画布 通过调用函数 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); 如何实现背景滚动 首先我们准备了一张2532*940 ...
- 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置
USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...
- HTTP响应头和请求头信息对照表
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用 ...
- [面试没答上的问题1]http请求,请求头和响应头都有什么信息?
最近在找工作,面试官问了一些问题自己并没有回答上,这里做一个小结. http请求,请求头和响应头都有什么信息? 页面和服务器交互最常见的方式就是ajax,ajax简单来说是浏览器发送请求到服务端,然后 ...
- delphi treeview 鼠标移动显示hint信息
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Nod ...
- datagrid 列鼠标悬浮显示全部信息
首次发表随笔,且是java新手,求不黑,可能在高手眼里好笑,嘿嘿1,样式设置超过字数限制显示省略号:<style type="text/css"> .datagrid- ...
随机推荐
- 配置Linux任务计划
Linux有三种计划任务: at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用) cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行) 系统级别的计划任务及其扩 ...
- ctrl + d 在phpstorm 和 eclipse 中的不同含义
Ctrl + d 在phpstrom是复制一行,非常的方便,但是eclipse中却是删除一行,非常的特别.感觉上,phpstorm更注重鼠标,但eclipse貌似更多鼠标和键盘的操作, 默认情况下[p ...
- HTTP 头部解释
1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Charset:浏览器申明自己 ...
- Linux里设置环境变量的方法(export PATH)
1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...
- Windows 位图
目录 第1章简介 1 1.1 DFB 1 1.2 DDB 1 1.3 DIB 2 第2章相关API 3 2.1 创建 3 2.1.1 CreateCompatibl ...
- linux笔记:linux帮助命令,man,help,whatis,apropos
命令名称:man功能:获得帮助信息命令所在路径:/usr/bin/man用法:man 命令或配置文件其他:会调用less来查看该命令或配置文件的帮助信息. 命令名称:whatis功能:获得命令的简短介 ...
- MYSQL 表结构的修改
-- 修改字段 默认值 ALTER TABLE house_owner ALTER COLUMN addr SET DEFAULT ""; -- 修改字段 名称 COMMENT & ...
- python 练习 15
#!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1,10): for j in range(1,10): result = i * j ...
- [JavaScript] 函数同名问题
存在同名函数时,最后的函数会覆盖掉以前的同名函数. var x = 1, y = z = 0; function add(n) { return n = n + 1; } y = add(x); fu ...
- 《Java程序设计》第六周学习总结
20145224 <Java程序设计>第六周学习总结 教材学习内容总结 第十章输入和输出 10.1.1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流. ...