Opencv学习记录之鼠标窗口响应

openCV中的鼠标事件(实现画图) 鼠标事件即为对鼠标的操作,如单击或双击左键、右键等,我们可以通过鼠标事件获得鼠标对应图片的位置,进而可以做我们想做的事情。在openCV中,鼠标事件的回调函数有一个统一的格式,不同的地方在于回调后实现的功能。... 阅读详情
/*
 *	Description: drawing box in the window by opencv.
 *	
 *	by pbImage at 2013-07-24
*/
#include <opencv2/opencv.hpp>

using namespace cv;

Rect box;
bool drawing_box = false;

void drawBoxEx(Mat& image, CvRect box)
{
	rectangle( image, cvPoint(box.x, box.y), cvPoint(box.x + box.width, box.y + box.height), cv::Scalar(255, 0, 0), 1);
} 
//bounding box mouse callback
void mouseHandler(int event, int x, int y, int flags, void *param)
{
	Mat* tmp = (Mat*)param;
	Mat tempFm = *tmp;
	switch(event)
	{
	case CV_EVENT_MOUSEMOVE:
		{
			if (drawing_box)
			{
				box.width = x - box.x;
				box.height = y - box.y;
			}
		}
		break;
	case CV_EVENT_LBUTTONDOWN:
		{
			drawing_box = true;
			box = cvRect(x, y, 0, 0);
		}
		break;
	case CV_EVENT_LBUTTONUP:
		{
			drawing_box = false;
			if(box.width < 0)
			{
				box.x += box.width;
				box.width *= -1;
			}
			if(box.height < 0)
			{
				box.y += box.height;
				box.height *= -1;
			}

			drawBoxEx(tempFm, box);
		}
		break;
	}
}


int main()
{
	VideoCapture camera(0);
	if (!camera.isOpened())
	{
		printf("Open camera failed\n");
		return -1;
	}
	namedWindow("video");

	Mat frame;
	camera>>frame;
	cvSetMouseCallback( "video", mouseHandler, (void*)&frame );

	char setMouse = 0;
	while(1)
	{
		camera>>frame;

		if (box.width > 0 && box.height > 0)
		{
			drawBoxEx(frame, box);
		}
		imshow("video", frame);

		if (waitKey(1) == 27)
		{
			break;
		}
	}
	return 0;
}
代码比较简单,贴在这里的目的主要是为了方便自己日后使用,直接copy。当然,同时也分享给OpenCV新成员,欢迎大家进入CV大家庭。
Qt图片交互——QGraphicsView+鼠标选点+放大缩小+OpenCV 1.功能目标 通过 QGraphicsView 实现 OpenCV Mat 的显示,并且可以响应鼠标事件,在 Mat 上绘制选择的点,同时可以进行放大缩小操作。 备注:QLabel 也能够完成同样的操作,但是QLabel的放缩是对控件本身缩放,且像素显示会自动插值,图片放大时无法显示单个像素点,且控件放大太大时响应会很慢,如果仅固定大小图片进行展示,可以选择使用QLabel。需要放缩操作时,QGraphicsView 更好用。 2.核心代码 2.1.初始化 在窗体中增加QGraphicsView控件,示例中 阅读详情

相关推荐

OpenCV之鼠标响应函数(setMouseCallback)

人机交互在物体跟踪、图像特征提取、图像分割等方面都有着广泛的应用。比如说,现在有一张图片,上面存在若干个空洞(数据缺失部分),为了将这些空洞部分提取出来,最简单的一种方法就是构建人机交互程序,首先显示该图片,然后由人手动地画方框来将这些空洞部分给圈出来。这种方法在数据量比较少的时候非常有效且准确。 要实现类似的这种人机交互功能,OpenCV里通常需要用到鼠标回调函数,即setMouseCallba...

qq_35560656的博客 2399

Opencv鼠标响应(框选以及取点)

Opencv鼠标响应

朱铭德的博客 1万+

OpenCV相应鼠标点击事件

本片博客出要参考《学习OpenCV》第四章内容,重点函数在代码中做了解释: #include #include #include #include using namespace std; using namespace cv; void my_mouse_callback(int event,int x, int y, int flags, void *param); CvRec

u011559236的博客 1594

OpenCV学习笔记(七)——窗口交互操作(图像窗口滑动条、鼠标响应事件)

目录1 图像窗口滑动条2 鼠标响应 窗口交互操作可以方便用户对程序流程进行操作,能使用户根据不同需求实现不同的处理效果。有时,某一个参数的需要反复调试不同的数值来确定,使用图像窗口滑动条可以快速确定这些参数值。因此交互操作不仅可以在程序运行过程中改变参数数值、避免重复运行程序、节省时间,还能够增加结果的对比效果。 1 图像窗口滑动条 图像窗口滑动条就是在显示图像的窗口中创建的能够通过滑动改变数值的滑动条,它可以帮助我们动态调节某些参数,使图像处理的效果更加明显。在OpenCV4中可以使用cv.createT

a1016249126的博客 7288

GD32F303 Keil 工程项目从零搭建实战指南

本文是一份详细的GD32F303 Keil工程项目从零搭建实战指南。文章阐述了亲手搭建工程的重要性,并逐步指导开发者完成从环境准备、目录规划、工程创建、文件添加、关键配置到编译调试的全过程。重点讲解了如何正确选择启动文件、添加外设库、配置头文件路径和全局宏,旨在帮助开发者深入理解工程结构,掌握GD32F303开发的核心技能,实现从“会用”到“懂”的跨越。

weixin_29190651的博客 406

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

p6666666668的博客 1588

使用cv::findFundamentalMat要注意的几点

在新版的OpenCV中,很多C代码都被重新封装成了C++代码,相应的其调用接口也发生了改变,而文档中的叙述也越来越不清楚,往往导致使用过程中出现各种问题。     在处理立体图像对的时候经常会用到对极几何的知识,计算基础矩阵也是很常见的事。OpenCV实现了基本矩阵的算法。对于老版本的C代码,计算基本矩阵的RANSAC方法中有一个迭代次数不收敛的bug,可能导致每次计算的采样次数都达到最大限

wangerwei86的专栏 2022

盲孔、埋孔、通孔、一阶HDI、二阶HDI概念

文章目录1. 盲孔和埋孔2. 一阶、二阶HDI3. PADS软件设置盲埋孔 1. 盲孔和埋孔 HDI板是高密度互连(High Density Interconnector)的缩写,是生产印制板的一种技术,使用微盲埋孔技术的一种线路分布密度比较高的电路板,也被称为盲埋孔板,下图就是一个6层HDI板,其中C和D就是盲孔,B是埋孔,A是通孔。 盲孔(Blind Via)指连接外层到内层的金属化孔,D是V13孔,连接顶层和第3层,C是V56孔,连接第5层和底层。 埋孔(Buried Via)指连接内层到内层的金属

记得诚 3万+

opencv3中SIFT图像拼接代码详解(findHomography)

一、检测特征点 Ptr&lt;xfeatures2d::SIFT&gt;feature = xfeatures2d::SIFT::create();//创建SIFT特征类 vector&lt;KeyPoint&gt;keypoints1, keypoints2; feature-&gt;detect(img1, keypoints1);//检测特征点,检测信息保存在keypoint中 featur...

ankertqf的博客 6738

Lumerical 教程目录,说明及个人感悟(共计138篇,持续更新中)

Lumerical---教程说明及个人感悟

u011699626的博客 1万+

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕竟某些富裕的IT企业,每到年末就会以此制造新闻来博取大家的关注,以彰显自身的实力。 一言以蔽之,待遇问题也就是年收入究竟会有多少,也是我们进入职场的人喜欢相互打听的问题。比如我研究生那届最厉害的一位同学,签了A公司的算法岗位,年薪30W+(税前,下同),在当时的我看来就是天价了

Gleam的专栏 1225

【学习记录】OpenCV鼠标事件

本博客仅为学习记录之用,目的在于后续若需要相关的有资可查。如有错误,欢迎指出交流学习!本博客包含鼠标事件的应用: 鼠标事件的应用;图片动态局部放大;动态绘制矩形框用以放大;cv2多行文本的显示。以上就是本文的主要内容,主要是OpenCV鼠标事件的基本使用。

录求学之迹,留影于凡庸之日,若有益于君,更胜琼瑶。 2064

Python爬虫-汽车之家各车系月销量榜数据

本文是该专栏的第41篇,后面会持续分享python爬虫干货知识。本文以某汽车平台为例,基于python采集该平台“各车系月销量”的榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1619

OpenCV-鼠标响应

OpenCV学习笔记。操作鼠标来进行一些提示信息。鼠标操作事件。

weixin_43194657的博客 1422

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

OpenCode + Oh My OpenCode:打造你的终极AI编程团队(OpenCode新手入门指南)

本文详细介绍了开源终端AI编程助手 OpenCode 的完整配置教程 🖥️,从安装、AI模型配置到增强插件 Oh My OpenCode 的部署一应俱全。支持 Claude、ChatGPT、Gemini 多模型切换 🤖,还能实现多AI智能体协作开发。步骤清晰适合新手 📝,想在终端用AI写代码的开发者不要错过 ✨

XiaoqiangClub的博客 1万+

计算机视觉OpenCv学习系列:第四部分、键盘+鼠标响应操作

计算机视觉OpenCv学习系列:第四部分、键盘+鼠标响应操作

weixin_52836217的博客 2827

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

opencv鼠标响应函数_Opencv函数setMouseCallback鼠标事件响应

用户通过鼠标对图像视窗最常见的操作有:1. 左键单击按下2. 左键单击抬起3. 左键按下拖动4. 鼠标指针位置移动单次单击操作响应事件及顺序Opencv中setMouseCallback()创建了一个鼠标回调函数,每次在图像上单击鼠标左键再抬起的过程,都会分3次调用鼠标响应函数,并且响应顺序是:1.左键单击按下;2.左键单击抬起;3.鼠标指针位置移动(即使原地单击,鼠标位置并没有移动);可以编码验...

weixin_29353431的博客 754

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Opencv学习记录(二)——鼠标响应操作,显示像素点信息

最近在做一个基于opencv的目标跟踪的项目,用到了图像一些通道的阈值处理,于是就写了一个输入图像路径,输入通道命令,再用鼠标点击即在图像上显示该像素的信息(坐标+像素值)。 说明:终端输入图像路径,输入要转换的通道,左键点击显示该像素的信息,右键清除。 用到的opencv工具函数: 1、鼠标响应函数 cv::setMouseCallback(windowname, on_mouse...

stupid_miao的博客 1687

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Opencv函数setMouseCallback鼠标事件响应

Opencv中setMouseCallback()创建了一个鼠标回调函数,每次在图像上单击鼠标左键再抬起的过程,都会分3次调用鼠标响应函数,并且响应顺序是: 1.左键单击按下; 2.左键单击抬起; 3.鼠标指针位置移动(即使原地单击,鼠标位置并没有移动);

牧野的博客 2万+

OpenCV-Python学习(15)—— OpenCV 鼠标操作和响应(cv.setMouseCallback)

创建一个500*500的白色背景图片; 复制一个一样大小的白色背景图; 创建一个窗口,监听这个窗口的鼠标事件; 鼠标回调函数,绘制矩形; 当前次鼠标左键开始坐标; 开始后允许对移动中坐标进行记录; 产生随机颜色; 将上次绘制的结果给当前图片,为了将当前次移动过程中产生的绘制清除; 当前次移动结束的坐标,绘制移动中的当前矩形; 当前次坐标点绘制结束坐标点,结束鼠标移动监听; 绘制当前次鼠标左键按下到放开起点和终点组成的矩形; 保存当前次绘制的图片,坐标点还原; 每10毫秒显示一次图片。

止于至善 3776

Opencv学习(14)——鼠标响应setMouseCallback()

setMouseCallback() void cv::setMouseCallback ( const String & winname, MouseCallback onMouse, void * userdata = 0 ) 参数: winname:窗口的名字 onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针。 这个函数的原型应...

xiaohu的博客 2470

opencv中鼠标函数的使用 及c++实现

鼠标事件函数介绍 opencv中进行鼠标操作主要用到setMouseCallback这个函数,如下: void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0); winname:窗口名称 onMouse:鼠标响应函数,回调函数 userdata:用户自定义的参...

qq_40692109的博客 4637

Opencv -- 17鼠标操作与响应

函数介绍: 1、绑定回调事件函数: void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0); 功能:为指定的窗口设置鼠标处理程序 参数: winname – Window name (窗体的名称) onMouse - 鼠标事件的回调函数。 param 传递给回调函数的可选参数。 2、鼠标事件的回调函...

xuechanba的博客 3140
上一篇: Android之SharedPreference
下一篇: 关于中文字符显示为乱码
WTK-CV
博客等级 码龄16年 48粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值