【opencv3的鼠标事件选取ROI区域操作】_event == cv_event_lbuttonup-程序员宅基地

  1. 选取图像中的ROI区域:
#include<opencv2\opencv.hpp>
#include <stdio.h>  
using namespace cv;
using namespace std;
Mat org, dst, img, tmp;
	void on_mouse(int event, int x, int y, int flags, void *)
	{
		static Point pre_pt = (-1, -1);
		static Point cur_pt = (-1, -1);
		if (event == CV_EVENT_LBUTTONDOWN)
		{
			pre_pt = Point(x, y);
            cout<<pre_pt<<endl;
		}
		else if (event == CV_EVENT_MOUSEMOVE && flags)//摁下左键,flags为1 

		{
			org.copyTo(tmp);
			cur_pt = Point(x, y);
			circle(tmp,cur_pt,4,Scalar(0, 255, 0, 0),2,8);
			rectangle(tmp, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
            cout<<cur_pt<<endl;
			imshow("img", tmp);//画的时候显示框
		}
		else if (event == CV_EVENT_LBUTTONUP)
		{
			org.copyTo(img);
			rectangle(img, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
			imshow("img", img);//画完后显示框
			int width = abs(pre_pt.x - cur_pt.x);
			int height = abs(pre_pt.y - cur_pt.y);
			dst = org(Rect(min(cur_pt.x, pre_pt.x), min(cur_pt.y, pre_pt.y), width, height));
			namedWindow("dst");
			imshow("dst", dst);

		}

	}



	void main(){
		org = imread("98.jpg");
		org.copyTo(img);
		namedWindow("img");
		imshow("img", img);
		setMouseCallback("img", on_mouse, 0);
	/*	waitKey();
		cvtColor(dst, dst, CV_BGR2GRAY);
		imshow("gray", dst);*/
		waitKey(0);
	}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35054151/article/details/83508533

智能推荐

linux loadavg详解(top cpu load)-程序员宅基地

文章浏览阅读241次。目录[隐藏]1Loadavg分析1.1Loadavg浅述1.2Loadavg读取1.3Loadavg和进程之间的关系1.4Loadavg采样218内核计算loadavg存在的问题2.1xtime_lock解析2.2全局load读写分离解xtime_lock问题2.3几个关键点:2..._$load_avg_per_cpu.max.warn

【数据结构初阶】八大排序(二)——快速排序&&冒泡排序-程序员宅基地

文章浏览阅读1.2k次,点赞53次,收藏39次。快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定。

githubDesktop的使用说明(附下载链接)_下载了githubdesktop-程序员宅基地

文章浏览阅读1.3k次。step1 :下载百度云链接https://pan.baidu.com/s/1luAFF8gGddWFqgbq-_X0cg提取码: 5xdj包含 git github forwindows githubforMac 以及notepad++step2:安装这个安装程序,是强制安装路径的,所以不要乱搞 下载之后直接点击就行。@基本情况就是这样..._下载了githubdesktop

初探Java Nashorn脚本引擎-程序员宅基地

文章浏览阅读4.7k次。要想让一个程序功能变得灵活起来,那么配置绝对是不可或缺的,通过合理的设计,将所有动态变量都配置化,可以最大程度上让程序变得灵活。可是在某些复杂的业务场景中,仅仅只是变量的配置化,往往还并不能满足需求,尤其是互联网这种业务需要快速更迭的行业。于是,做一个这样的功能:仅仅依靠配置,就能让程序的逻辑cover住所有的业务逻辑变化,就成为了程序员的终极梦想。然而,现实是残酷的,"write once run forevre",这几乎是不可能实现的梦想(如果真的出现了这样的技术,那可能会是我们职业生涯将要面对的最_nashorn

【CTF】用python PIL将RGB值转化为图片_ctf 三个坐标值转换图像-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏28次。一道关于ctf的题,用python将rgb值转化为图片_ctf 三个坐标值转换图像

海思HI35xx平台软件开发快速入门之背景知识-程序员宅基地

文章浏览阅读1.4k次。前言: 安防领域最近几年可谓暗流涌动,作为安防业的双寡头,大华股份与海康威视凭借行业的东风,两家公司的成长速度异常强劲,在国际市场上已经和应用厂家进行厮杀。 2015年两家公司双双晋升“全球安放50强”,海康排名第二,大华排名第五。以华为海思为代表国产芯片解决方案不断走强,在国际竞争中优势凸显,在后端NVR高端产品线先后推出了海思3531、海思3535、海思3536,同时针对低端的产品线也不..._海思hi35xx平台软件开发快速入门之背景知识

随便推点

ssh隧道代理,简单使用_10004端口-程序员宅基地

文章浏览阅读408次。ssh隧道代理,需要一个中间服务器,用于建立两端的连接1.中间服务器(10.12.28.55)2.需要访问的地址(中间服务器可以访问,本地无法访问)3.需要访问的远端服务器端口一、本地访问远端ssh -NfL 10004:10.12.27.58:1000410.12.28.55二、远程访问本地ssh -NfR10004:127.0.0.1:1000410.12.28.55访问中间机子的10004端口就可以访问本地端口信息了参数解释:N :只用做端口转..._10004端口

什么是OTL-程序员宅基地

文章浏览阅读1.9k次。OTL是英文Output Transformer Less 的简写,意思是无输出变压器。OTL功率放大器就是没有输出耦合变压器的功率放大器电路。 OTL功率放大器大多数采用互补推挽输出级电路。如图所示为互补对称式OTL功率放大电路。T2为一只NPN型功率晶体管,T3为一只PNP型晶体管,它们组成互补推挽输出管,T1为电压放大激励管。信号经过C1耦合送入T1进行放大后,从T1集电极产生的信号_otl

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage问题的解决-程序员宅基地

文章浏览阅读2w次。参考博客:https://blog.csdn.net/qq_36630050/article/details/80708685 android studio出错提示:Build command failed.Error while executing 'E:\Android\SDK\cmake\3.6.4111459\bin\cmake.exe' with arguments..._cmake error: cmake_c_compiler not set, after enablelanguage cmake error: cma

LSB-tree理论证明理解_lsb tree-程序员宅基地

文章浏览阅读285次。一些基本公式和定义(1,c,p1,p2)(1,c,p1,p2)(1,c,p_1,p_2)敏感含义‖,‖≤r,Pr[]≥p1‖,‖≤r,Pr[]≥p1\|,\| \leq r, Pr[] \geq p_1, ‖,‖&gt;cr,Pr[]≤p2‖,‖&gt;cr,Pr[]≤p2\|,\| > cr, Pr[] \leq p_2基本LSH函数h(o)=⌊a⋅o+bw⌋h(o)=⌊a..._lsb tree

mathtype插入在WPS中出现The MathType DLL cannot be found问题_mathtype不能被发现-程序员宅基地

文章浏览阅读2k次。mathtype插入在WPS中出现The MathType DLL cannot be found问题_mathtype不能被发现

Lc.exe已退出代码为-1问题解决⽅法_lc.exe已退出 代码为-1-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏3次。对于⽤vs作为开发⼯具的同学来说,可能常常会碰到“Lc.exe已退出代码为-1”的问题,造成这个结果的⼀般是因为加⼊了第三⽅的插件程序造成的,今天记录下如何解决。查看加载的程序项⽬,找到Properties⽂件夹licenses.licx⽂件,然后右键选择删除就可以了,调试运⾏正常了。可以使⽤⽂本编辑器打开上述⽂件,也可以使⽤其它的编辑器,在⽂件中查找licenses.licx字样,删除对应节点。找到你系统的*.csproj⽂件,这个⽂件是加载项⽬⽂件。c.exe已退出代码为-1问题解决⽅法。_lc.exe已退出 代码为-1