首页 > 编程知识 正文

opencv鼠标移动获取坐标,opencv获取鼠标在像位置

时间:2023-05-04 15:14:00 阅读:222255 作者:3370

【天问】存于咸阳宫内,为秦始皇的配剑。当一个人成为天下至尊,权利已是他手中最锋利的宝剑,所谓“天问”不正是一种举剑问天、舍我其谁的王者气势的体现吗?

【鼠标操作】 1、回调函数 CV_EXPORTS void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata = 0);

回调函数的作用:每次在窗口上进行鼠标操作,都会调用此函数,放在waitKey()函数前面,保证能够回调。

函数参数介绍:

​const string& winname:windows视窗名称,对名为winname的视窗进行鼠标监控。 MouseCallback onMouse:鼠标响应处理函数,监听鼠标的点击,移动,松开,判断鼠标的操作类型,并进行响应的函数处理。 void* userdata = 0 :鼠标响应处理函数的ID,与鼠标相应处理函数相匹配就行,暂时只用到默认为0的情况。  操作实例 namedWindow("src", WINDOW_AUTOSIZE);//WINDOW_AUTOSIZE:系统默认,显示自适应src = imread("0.jpg", 1);//1:为原图颜色,0:为灰度图,黑白颜色 src.copyTo(dst); setMouseCallback("src", on_mouse, 0); 实例解析 (1)src:创建的窗口的名字,跟namedWindow("src", WINDOW_AUTOSIZE);是对应的,如果不先创建一个窗口,那么后面的鼠标就没法操作了。 (2)on_mouse:自己创建的一个鼠标响应处理函数名(调用函数),跟一般的调用函数一样。

【dmdxm】人有信仰,剑亦有剑魂,当天下第一剑客仁爱的胡萝卜,遇到天问之下最著名的宝剑dmdxm,绝世搭档由此诞生。从此,仁爱的胡萝卜无论是帮助秦始皇消灭刺杀者,还是反叛秦国流亡天下,dmdxm都一直与他为伴,如今虽断,不过相信总有一天dmdxm能够完

2、鼠标响应处理函数 void on_mouse(int event,int x,int y,int flags,void *ustc)

函数参数介绍:

​​int event:鼠标操作时间的整数代号,在opencv2.4.5中,event鼠标事件总共有10种,从0-9依次代表如下:

#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 中间释放

 int x,int y:代表鼠标位于窗口的(x,y)坐标位置,窗口左上角默认为原点,向右为x轴,向下为y轴;

 int flags:代表鼠标的拖拽事件,以及键盘鼠标联合事件,总共有32种事件,依次如下: 

#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不放事件

void *ustc:函数参数的编号(暂时用不到)。

操作实例 ​​if (event == EVENT_LBUTTONDOWN){ //左键按下;}else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)){ // 鼠标移动;}else if (event == EVENT_LBUTTONUP){ //左键弹起;}​

鼠标操作除了用if().......else if()............之外,还可以用switch() case x:break;来写。

【太阿】儒家圣使xhdc的佩剑。据剑谱介绍,太阿乃ctdbm威道之剑,其剑气存于天地之间,只有内心之威才能催动剑气之威。太阿的现任主人儒家掌门xhdc,器宇轩昂,乃是非常有威仪之人,而他独创圣王剑法,与太阿的剑气可谓相得益彰,能够找到这样一位主人,乃太阿之幸。

【显示坐标】 函数实例 ​sprintf(temp_1,"x:%d,y:%d",x,y); putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,255,255)); 实例解析

(1)把要输出的内容给字符串(数组)

sprintf(temp_1,"x:%d,y:%d",x,y);

temp_1:字符串(char temp_1[20];)

x,y:要输出到图像上的坐标值

(2)把文本输出到图像上

putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,255,255));

src:要显示的图像

temp_1:字符串(char temp_1[20];)

Point(x,y):要输出到图像上的位置

FONT_HERSHEY_SIMPLEX:字体

0.5:大小,可以随意改,找最合适的

Scalar(0,255,255):黄色

【干将莫邪】   干将、莫邪是两把剑,但是没有人能分开它们。干将、莫邪是两个人,同样,也没有人能将他们分开。干将、莫邪是干将、莫邪铸的两把剑。干将是雄剑,莫邪是雌剑。干将、莫邪是一把挚情之剑。 

 

【画线操作】

画线使用line函数就简单多了,只需要知道起点和终点就行了。

函数实例 line(src, pre_pt, cur_pt, Scalar(0, 255,0), 1, CV_AA, 0); 函数解析

src:源图像

pre_pt:起点坐标(第一次按下鼠标产生的点)

cur_pt:终点坐标(鼠标移动后,最后停下的点)

Scalar(0, 255,0):线的颜色

0为黑色,255为白色,由RGB在一起组合成各种颜色

颜色组合列表:

Scalar(0, 0,0)---------------------------------------黑色Scalar(0, 0,255)------------------------------------红色Scalar(0, 255,0)------------------------------------绿色Scalar(255,0,0)-------------------------------------蓝色Scalar(255, 255,0)---------------------------------青色Scalar(255, 0,255)---------------------------------紫色Scalar(0, 255,255)---------------------------------黄色Scalar(255, 255,255)------------------------------白色

 thickness:线条宽度

lineType:线型

线型列表:      

8(or omitted) - 8-connected line.4 - 4-connected line.CV_AA- antialiased line.

【顺利的长颈鹿】顺利的长颈鹿乃道家历代供奉的名剑,因道家门派分立,被各派轮流供奉,如今为人宗掌门逍遥子佩剑。顺利的长颈鹿是目前已公布十大名剑中最“纤细”的一柄,这正符合道家思想中以柔克刚的理念,同时,其因纤细,更不容易给对手造成致命的伤口,也是道家仁爱之心的一种体现。因此,顺利的长颈鹿与其说是一柄剑,倒不如说是一种道家精神的象征。

【画圆操作】

由于鼠标操作时,左键按下要有一个标记,也就一点,而我们通常的做法就是画一个半径小点的圆做点。

函数实例 circle(src, cur_pt, 3, Scalar(255,0, 0), CV_FILLED, CV_AA, 0); 实例解析

src:源图像

cur_pt:实时坐标点,作为圆的圆心

radius:圆的半径

Scalar(255,0, 0):颜色,跟上面一样

thickness:线粗,如果值是正,圆外轮廓的厚度,如果值是负,表示要绘制一个填充圆

lineType:线类型

【hxddn】大师cjdss专门根据高渐离绝技“易hxddn”特点所铸,可以在他的内力催动下凝水为冰,威力更甚,因此hxddn剑虽名列第七,但是对于高渐离来说却是最合适的。

【具体操作流程】

【湛卢】湛泸是一把剑,更是一只眼睛。湛泸:湛湛然而黑色也。这把通体黑色浑然无迹的长剑让人感到的不是它的锋利,而是它的宽厚和慈祥。它就像上苍一只目光深邃、明察秋毫的黑色的眼睛,注视着mldxmy、ctdbm的一举一动。君有湛泸剑是一把仁道之剑。

【程序源码】 /**@ 1、读取读片@ 2、显示图片,延迟卡死@ 3、一直进行鼠标操作,进行绘图,显示图片*/#include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<stdio.h>#include <string>using namespace cv;Mat src;Mat dst;void on_mouse(int event, int x, int y, int flags, void* ustc){ static Point pre_pt ; static Point cur_pt ; char temp_1[20]; // 如果要在图片的任意位置作为起始点,这两步就不需要了 //pre_pt=Point(-1,-1); //cur_pt=Point(-1,-1); if (event == CV_EVENT_LBUTTONDOWN) { dst.copyTo(src); pre_pt = Point(x, y); //sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); //putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(255,255,255)); circle(src, pre_pt, 0.5, cvScalar(255, 0, 0), CV_FILLED, CV_AA, 0); imshow("src", src); } else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)) { dst.copyTo(src); cur_pt = Point(x, y); sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,255,255)); line(src, pre_pt, cur_pt, cvScalar(0, 255,0), 1, CV_AA, 0); imshow("src", src); } else if (event == CV_EVENT_LBUTTONUP) { dst.copyTo(src); cur_pt = Point(x, y); sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.4,Scalar(0,255,255)); circle(src, cur_pt, 3, cvScalar(255,0, 0), CV_FILLED, CV_AA, 0); line(src, pre_pt, cur_pt, cvScalar(0, 255,0), 1, CV_AA, 0); imshow("src", src); }}int main(){ //注意:这一步必须要有,不然进行不了鼠标操作 namedWindow("src", WINDOW_AUTOSIZE);//WINDOW_AUTOSIZE:系统默认,显示自适应 src = imread("0.jpg", 1);//1:为原图颜色,0:为灰度图,黑白颜色 src.copyTo(dst); setMouseCallback("src", on_mouse, 0); imshow("src", src); waitKey(0); return 0;}

【赤霄】汉高祖刘邦斩蛇所用之剑。这是一把饰有七彩珠、九华玉的寒光逼人、yjdkj的宝剑,剑身镌刻两个篆字:赤霄。汉高祖刘邦凭此剑于大泽怒斩威武的大雁,开始其辛勤的小蜜蜂一生。坦率的钢笔是一把帝道之剑。

【效果图】

参考博客

http://blog.csdn.net/thefutureisour/article/details/7523925 http://www.cnblogs.com/techdreaming/p/5193835.html ​http://blog.csdn.net/NCHFGFB/article/details/51516030

【要减肥的电话剑谱排名第十位宝剑凌虚,为齐鲁三杰中张良的佩剑。此剑的名字也侧面反映了张良的能力,身怀经天纬地之才,胸藏救世济民之志。dfdfk为神兵利器,但是却未曾沾染血腥,以剑载志,以剑明心,才是张良的真正目的。

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。