Opencv下图像对鼠标事件的响应
直接上代码:
////////////////////////////////////////////////////////////////////////
//
// 该程序从文件中读入一幅图像,响应在图片上的左键右键消息
// 并显示点击图像的坐标,然后显示出来.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
#include <windows.h> //定义鼠标响应消息函数mouseHandler函数名可以自己设定,event为鼠标响应事件
/*event: CV_EVENT_LBUTTONDOWN, CV_EVENT_RBUTTONDOWN, CV_EVENT_MBUTTONDOWN,
CV_EVENT_LBUTTONUP, CV_EVENT_RBUTTONUP, CV_EVENT_MBUTTONUP,
CV_EVENT_LBUTTONDBLCLK, CV_EVENT_RBUTTONDBLCLK, CV_EVENT_MBUTTONDBLCLK,
CV_EVENT_MOUSEMOVE */ //x,y为相对于图片左上角的像素坐标
/*flags: CV_EVENT_FLAG_CTRLKEY, CV_EVENT_FLAG_SHIFTKEY, CV_EVENT_FLAG_ALTKEY,
CV_EVENT_FLAG_LBUTTON, CV_EVENT_FLAG_RBUTTON, CV_EVENT_FLAG_MBUTTON */
//void* param为用户的值传给鼠标响应函数mouseHandler
void mouseHandler(int event, int x, int y, int flags, void* param)
{
switch(event){
case CV_EVENT_LBUTTONDOWN:
printf("Left button down.PixPoint(%d,%d)\n",x,y);
break; case CV_EVENT_RBUTTONDOWN:
printf("Right button down.PixPoint(%d,%d)\n",x,y);
break;
case CV_EVENT_MBUTTONDOWN:
if(flags&CV_EVENT_FLAG_CTRLKEY)
printf("Middle button down and ctrl is press at the same time.PixPoint(%d,%d)\n",x,y);
break;
}
} int main(int argc, char *argv[])
{
IplImage* img = ; //定义图像文件指针,指向载入的原始图像
int height,width,channels; //定位图像的长度(像素),宽带(像素),通道数(指每个像素用多少个字节表示)
uchar *data; //存储图像具体的像素数据 char Image_Filename[]; //输入图像文件的文件名 printf("Please input the filename of image:\n");
scanf("%s",Image_Filename); img=cvLoadImage(Image_Filename,); //载入图像函数,第一个参数为图像名称.第二个参数为辅助参数,
//有正,零,负三种值.正数表示以三通道图像载入(三通道即一个像素用3个字节表示),0表示
//以单通道载入图像,负数代表载入图像的通道数由图像本身决定.
if(!img)
{
printf("Could not load image file: %s\n",argv[]);
exit();
} cvNamedWindow("mainWin", ); //创建一个名称为mainWin的窗口,用于显示图像.CV_WINDOW_AUTOSIZE值为1
//表示固定窗口大小,若第二个参数为0表示窗口大小可变,图像也会随着窗口的大小而改变 cvMoveWindow("mainWin", , ); //设置窗口的位置,第一个参数为窗口的名字,后面两个参数为窗口显示的位置,(0,0)表示显示在桌面的左上角. cvSetMouseCallback("mainWin",mouseHandler,NULL); //注册鼠标事件处理函数,一个参数为要响应改函数的窗口名,第二个参数自定义的鼠标事件
//处理函数,最后一个为用户需要传给鼠标事件处理函数的值,不需要传递则设为NULL cvShowImage("mainWin", img ); //在之前创建的mainWin窗口中显示图像 cvWaitKey(); //等待敲击键盘,结束程序 cvReleaseImage(&img ); //释放图像文件指针
return ;
}
运行结果如下:
Opencv下图像对鼠标事件的响应的更多相关文章
- Java:在不同界面样式下JPopupMenu与鼠标事件mousePressed表现的结果不同!
今天遇到一个郁闷的事儿: 在一个JFrame上放了一个JList元件,这个JList元件添加了鼠标事件: mouseReleased.mousePressed ... 其中,在mouseRelease ...
- Opencv step by step - 鼠标事件
鼠标事件有下面几种(没有滚轮事件,比较遗憾): #define CV_EVENT_MOUSEMOVE 0 滑动 #define CV_EVENT_LBUTTONDOWN 1 左键点击 #define ...
- libvlc 双击,鼠标事件消息响应
基于vlc 2.1 动态库实现接收双击消息的接收,使双击vlc播放画面可以全屏显示. 需要其他版本的vlc可以与我联系(有偿进行修改) 下载地址:http://download.csdn.net/de ...
- Opencv函数setMouseCallback鼠标事件响应
用户通过鼠标对图像视窗最常见的操作有: 1. 左键单击按下 2. 左键单击抬起 3. 左键按下拖动 4. 鼠标指针位置移动 单次单击操作响应事件及顺序 Opencv中setMouseCallback( ...
- opencv与mfc显示图片操作,MFC的鼠标响应在opencv图片上失效,opencv滚轮事件没有响应问题描述解决。
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11588758.html 用mfc 与OPENCV编写成. 出了很多冲突异常事件导致鼠标操作没有 ...
- win8下IE10的鼠标mouse事件响应错误BUG
具体症状就是有时候鼠标左键响应,有时候右键才能响应 问题的原因就是事件对象的detail没有复位 https://github.com/clientside/amplesdk/issues/187
- opencv入门系列教学(四)处理鼠标事件
一.鼠标事件的简单演示 opencv中的鼠标事件,值得是任何与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等.我们先来看看鼠标事件有哪些,在python中执行下面代码: import cv2 ...
- 解决IE 下div与img重叠无法触发鼠标事件的问题
在IE下当我想在img标签上层显示一个div元素时,此时如果该div的background为空白(没有设置图片.或者颜色填充),会导致该div的鼠标事件失效:如果设置border为1px solid ...
- Opencv处理鼠标事件-OpenCV步步精深
在图片上双击过的位置绘制一个 圆圈 鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等. 我们可以通过鼠标事件获得与鼠标对应的图片上的坐标.我们通过以下函数来调用查看所 ...
随机推荐
- javascript之Boolean
一.new Boolean(value); //构造函数 Boolean(value); //转换函数 0,NaN,null,"",undefined都会转成false,其他都会返 ...
- 八大排序c++可运行精简版,一目了然
#include <iostream> using namespace std; // 插入排序开始===================== void insert_sort(int a ...
- 使用docker打造spark集群
前提条件:安装好了docker,见我的另一篇博客,Docker安装 有两种方式, Spark官方repo里,docker文件夹下的脚本.官方的这个脚本封装很薄,尽可能把必要的信息展示出来. AMPLa ...
- sqlexpress 不用管理工具 sa
操作步骤: 开始=>运行=>(快捷键:win+R) cmd, 屎劲敲回车. 出现黑色的DOS窗体后,输入如下几条命令: 1.SQLCMD -S (local)\sqlexpress -E ...
- python爬虫系列之爬京东手机数据
python抓京东手机数据 作者:vpoet mail:vpoet_sir@163.com #coding=utf-8 import urllib2 from lxml import etree im ...
- OpenWrt compiles
make -r world: build failed. Please re-run make with -j1 V=s to see what's going onmake: *** [world] ...
- Installing — pylibmc 1.2.3 documentation
Installing - pylibmc 1.2.3 documentation libmemcached
- No enclosing instance of type Outer is accessible. Must qualify the allocation with an enclosing instance of type Outer (e.g. x.new A() where x is an instance of Outer)
之前看内部类的时候没发现这个问题,今天写代码的时候遇到,写个最简单的例子: 下面这一段代码 红色的部分就是编译报错: No enclosing instance of type Outer is ac ...
- 数据连接池——JNDI
数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jd ...
- Elon Musk:同一时候颠覆几个行业的科技狂人
在苹果著名的"不同凡想"广告中,赞扬了那些改变世界的疯狂家伙们."他们不喜欢墨守成规,也不愿安于现状","他们改变了事物","他们 ...