opencv鼠标响应与操作

这篇具有很好参考价值的文章主要介绍了opencv鼠标响应与操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这节讲得好,建议仔细揣摩

Point sp(-1, -1);//初始位置
Point ep(-1, -1);//结束位置
Mat temp;
static void on_draw(int event, int x, int y, int flags, void * userdata) {
	Mat image = *((Mat*)userdata);//先将void类型转为Mat类型
	//((Mat*)userdata)是Mat类型指针 前面加*变成Mat数据
	//event指事件
	if (event == EVENT_LBUTTONDOWN)//左键按下
	{
		sp.x = x;
		sp.y = y;
		std::cout <<"start point"<< sp << std::endl;
	}
	else if (event == EVENT_LBUTTONUP) //左键抬起
	{
		ep.x = x;
		ep.y = y;
		int dx = ep.x - sp.x;//绘制的
		int dy = ep.y - sp.y;
		if (dx > 0 && dy > 0) {
			Rect box(sp.x, sp.y,dx,dy);//绘制矩形
			rectangle(image, box, Scalar(0, 255, 255), 2, 8, 0);
			imshow("鼠标绘制", image);
			imshow("ROI区域",image(box));
			//为下一次绘制做准备
			sp.x = -1;
			sp.y = -1;
		}
		
	}
	else if (event == EVENT_MOUSEMOVE) //当鼠标移动时  其也在获取坐标位置
	{
		if (sp.x > 0 && sp.y > 0)//左键按下后
		{
		ep.x = x;
		ep.y = y;
		int dx = ep.x - sp.x;//绘制的
		int dy = ep.y - sp.y;
		if (dx > 0 && dy > 0) {
			Rect box(sp.x, sp.y, dx, dy);//绘制矩形
			temp.copyTo(image);//实现了对前面绘制的框擦除  把temp 拷贝到image
			rectangle(image, box, Scalar(0, 255, 255), 2, 8, 0);
			imshow("鼠标绘制", image);
		}
		}
	
	}
}
void QuickDemo::mouse_drawing_demo(Mat &image)
{
	namedWindow("鼠标绘制", WINDOW_AUTOSIZE);
	setMouseCallback("鼠标绘制", on_draw,(void*)(&image));//上面有个代码类似
	/*void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata = 0)
	winname:窗口的名字
	onMouse : 鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针。
	这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param);
	userdate:传给回调函数的参数*/
	imshow("鼠标绘制", image);
	temp = image.clone();
}

和有一节课调整亮度对比度的有共同点.

代码注释都已标注,欢迎评论

实现效果

opencv鼠标响应与操作,50,opencv,计算机外设,人工智能文章来源地址https://www.toymoban.com/news/detail-830729.html

到了这里,关于opencv鼠标响应与操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类,想必做完90后的大家都看过数码宝贝吧,里面有好多类型的数码宝贝,今天就给大家简单实现一下,他们的分类任务。 引言 ResNet50模型简介 ResNet50模型原理 ResNet50模型的应

    2024年04月28日
    浏览(39)
  • 【计算机视觉】中科院发布Fast SAM,精度相当SAM,速度提升了50倍!

    SAM已经成为许多高级任务(如图像分割、图像描述和图像编辑)的基础步骤。然而,其巨大的计算开销限制了其在工业场景中的广泛应用。这种计算开销主要来自于处理高分辨率输入的Transformer架构。 因此,本文提出了一种具有可比性能的加速替代方法。通过将该任务重新定

    2024年02月12日
    浏览(42)
  • 【计算机视觉 | 目标检测】常见的两种评价指标:AP50和APr的理解和对比

    平均精度(Average Precision,简称AP)是目标检测中广泛使用的一种评价指标,用于衡量模型的检测精度。AP的计算方式基于精度-召回曲线(precision-recall curve)。 精度-召回曲线是在不同的置信度阈值下,以不同的召回率(recall)计算出的对应的精度(precision)点组成的曲线。其

    2024年02月05日
    浏览(59)
  • 计算机图形学实验四 OpenGL的鼠标交互绘制

    一、实验目的 1.掌握OpenGL的鼠标按钮响应函数。 2.掌握OpenGL的鼠标移动响应函数。 3.进一步巩固OpenGL的基本图元绘制基础。 二、实验内容 1.鼠标画草图——实现鼠标点到哪,线就画到哪。 思路: 1)在主程序注册鼠标响应和鼠标移动子函数: glutMouseFunc(mymouse); glutMotionFunc(mym

    2023年04月20日
    浏览(122)
  • OpenCV-Python学习(15)—— OpenCV 鼠标操作和响应(cv.setMouseCallback)

    1. 学习目标 学习如何在OpenCV中处理鼠标事件; 学习鼠标事件与回调; 学习鼠标事件回调函数的基本流程。 2. Callback 基本流程 3. 鼠标事件 cv.setMouseCallback 函数说明 3.1 cv.setMouseCallback() 函数使用 3.2 参数说明 参数 说明 winname 表示监听鼠标事件的窗口。 onMouse 表示响应函数,即

    2024年02月10日
    浏览(50)
  • 计算机视觉的应用4-目标检测任务:利用Faster R-cnn+Resnet50+FPN模型对目标进行预测

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用4-目标检测任务,利用Faster Rcnn+Resnet50+FPN模型对目标进行预测,目标检测是计算机视觉三大任务中应用较为广泛的,Faster R-CNN 是一个著名的目标检测网络,其主要分为两个模块:Region Proposal Network (RPN) 和 Fast R-CNN。我

    2024年02月05日
    浏览(55)
  • 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    传送门 实现多边形扫描线填充算法,并和鼠标进行交互。 具体原理略过,会贴上完整代码,可直接运行。 环境: vs2019,OpenGL的库(可以搜索如何用vs使用OpenGL的库,可以使用vs自带的插件或者其他方法,很方便) 要点: 1.NET和AET的创建,改动 2.改变鼠标点击和鼠标拖拽的响应

    2023年04月08日
    浏览(78)
  • 计算机视觉:OpenCV相机标定

    针孔照相机模型是一种经典的相机模型,它将相机视为一个针孔,将场景中的点投影到成像平面上。在这个模型中,相机的 内参和外参 描述了相机的几何形状和相机的姿态。 相机的 内参矩阵 描述了相机的内部几何形状,包括相机的焦距、像素尺寸和像素坐标原点。相机的

    2024年01月19日
    浏览(67)
  • 计算机视觉(OpenCV+TensorFlow)

    本系列文章是OpenCV系列文章的第三篇,仍然跟随上篇内容主要聚焦于图像的一些操作 在通常情况下我们使用大小恒定的图像。但在某些情况下,我们需要使用不同分辨率的同幅图像,例如,在搜索图像中的某些内容比如脸部信息时,并不确定该内容在图像中占据的大小。这种

    2024年02月05日
    浏览(51)
  • 【OpenCV】OpenCV:计算机视觉的强大工具库

    摘要   OpenCV是一个广泛应用于计算机视觉领域的开源工具库,为开发者提供了丰富的图像处理和计算机视觉算法。本文将介绍OpenCV的功能和应用领域,并探讨它在实践中的重要性和前景。 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包