MFC工程中划定ROI区域
文章目录
- 感兴趣区域(ROI,region of interest)
- MFC工程下划定感兴趣区域
- 项目工程文件
在MFC工程中划定感兴趣区域,以便于在划定区域中进行行人检测。
感兴趣区域(ROI,region of interest)
机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。
在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。 在图像处理领域,感兴趣区域(ROI) 是从图像中选择的一个图像区域,这个区域是你的图像分析所关注的重点。圈定该区域以便进行进一步处理。使用ROI圈定你想读的目标,可以减少处理时间,增加精度。
MFC工程下划定感兴趣区域
划定区域的关键是获得感兴趣区域的坐标,首先获取第一帧图片进行坐标的选取,划定后进行视频的显示。
划定ROI区域中项目中,回调函数等参数介绍可以了解OpenCV中感兴趣区域的选取与检测(一)
- 创建MFC基于对话框工程文件,添加相应控件
- 打开视频文件区域关键代码如下,获取一帧进行显示
void CROIDlg::OnBnClickedOpen() {CFileDialog dlg(TRUE, NULL, NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,NULL, NULL); // 选项图片的约定dlg.m_ofn.lpstrTitle = _T("打开视频文件"); // 打开文件对话框的标题名if (dlg.DoModal() != IDOK) // 判断是否获得图片return;flageS = true;CString mPath = dlg.GetPathName();FileName = mPath;// 获取图片路径if (capture.isOpened()){capture.release();}if (!capture.open(LPCSTR(mPath))){MessageBox("打开视频出错!");return;}else{Mat src;capture >> src;IplImage* m_Frame;m_Frame = &IplImage(src);CvvImage m_CvvImage;m_CvvImage.CopyOf(m_Frame, 1);m_CvvImage.DrawToHDC(hDC, &rect); //通过句柄hDC,显示 }}
- 划定ROI区域相关代码如下,
void CROIDlg::OnBnClickedRoi() {// TODO: 在此添加控件通知处理程序代码//视频中的第一帧 Mat firstFrame;Mat src;flageROI = true;capture >> src;//复制到firstFrame中 src.copyTo(firstFrame);//register namedWindow("ROI", WINDOW_AUTOSIZE);/*resizeWindow("ROI", 600, 500);*/setMouseCallback("ROI", mouseRectHandler, NULL);//画感兴趣区域 while (!gotBox){firstFrame.copyTo(src);rectangle(src, box, Scalar(255, 0, 0), 2);//画出感兴趣区域imshow("ROI", src);if (waitKey(50) == 'q') break;}//remove callback setMouseCallback("ROI", NULL, NULL);destroyWindow("ROI");flageROI = true;if (flageROI){// 显示图像参数capture >> sour;flageS = true;char chEdit[10];_itoa_s(sour.cols, chEdit, 10);SetDlgItemText(IDC_SHOW, chEdit);_itoa_s(sour.rows, chEdit, 10);SetDlgItemText(IDC_SHOW, chEdit);// 刷新显示区Invalidate(TRUE);// 设置定时器SetTimer(1, 40, NULL);} }
- 回调函数
mouseRectHandler
为void mouseRectHandler(int event, int x, int y, int flags, void *param) {//Mat img = src.clone();switch (event){case CV_EVENT_MOUSEMOVE:if (drawing_box){//鼠标的移动到downPoint的右下角if (x >= downPoint.x && y >= downPoint.y){box.x = downPoint.x;box.y = downPoint.y;box.width = x - downPoint.x;box.height = y - downPoint.y;}//鼠标的移动到downPoint的右上角if (x >= downPoint.x && y <= downPoint.y){box.x = downPoint.x;box.y = y;box.width = x - downPoint.x;box.height = downPoint.y - y;}//鼠标的移动到downPoint的左上角if (x <= downPoint.x && y <= downPoint.y){box.x = x;box.y = y;box.width = downPoint.x - x;box.height = downPoint.y - y;}//鼠标的移动到downPoint的左下角if (x <= downPoint.x && y >= downPoint.y){box.x = x;box.y = downPoint.y;box.width = downPoint.x - x;box.height = y - downPoint.y;}}break;case CV_EVENT_LBUTTONDOWN://按下鼠标,代表可以可以开始画矩形drawing_box = true;//记录起点downPoint = Point(x, y);//初始化起始矩形框 box = Rect(x, y, 0, 0);break;case CV_EVENT_LBUTTONUP://松开鼠标,代表结束画矩形drawing_box = false;gotBox = true;break;default:break;} }
- 回调函数
- 效果图:
项目工程文件
- CSDN
- GitHub
MFC工程中划定ROI区域相关推荐
- 【利用OpenCV-Python在图像中选择ROI区域并提取ROI坐标信息】
[利用OpenCV-Python在图像中选择ROI区域并提取ROI坐标信息] 文前白话 代码: 效果: 文前白话 在图像中选定ROI区域进行进一步的功能开发,就需要提取到相应的ROI区域坐标,对于多边 ...
- 非MFC工程中使用MFC库
需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console Application.MFC Application.Win32 Project等.在创建MFC工程时 ...
- mfc工程中添加com接口支持
在普通的mfc工程中常常需要添加com接口支持.最典型的应用就是使用 com中的连接点机制时,需要在客户端实现事件接受器.简单说来,就是要实现在com服务器端声明的事件接口.这个接口由server端暴 ...
- 在MFC工程中新建一个对话框
1.MFC简介 Microsoft Foundation Class微软基础类库,这个类集以层次结构组织起来,其中封装了发部分的Windows API函数和Windows控件,它所包含的功能设计整个W ...
- C++ Excel表格解析(一、MFC工程中的应用)
一.前言 C++怎么解析Excel呢,这两天研究了一下,这一篇就来谈一谈MFC中如何解析Excel. 二.准备 2.1 代码结构 2.2 类说明 2.2.1 类型库 图中圈出来的这些类,都是一些自带的 ...
- VS2010 MFC工程中 错误提示: IntelliSense: 无法打开源文件 defines.h
类似无法找到文件的问题都可以用这个方法解决,就是路径的问题.vc++2008的项目转到vc++2010也可能出现类似的问题. 解决方法: 在 项目属性=>配置属性=>C/C++ =&g ...
- OpenCV-如何提取出图片ROI区域
根据项目需要,提取视频中的ROI区域进行处理,对于无关区域可以屏蔽掉.主要原理是把原始帧中的ROI定位(如帧差法.背景减除法找出轮廓矩形)后复制到一个黑色背景中,再进行后续预处理. 这里只是以图片为例 ...
- mfc 内嵌 本地html,MFC程序中内嵌网页,附示例工程
最近在课程设计,因为小悠太懒了,是在不想用C++完成一些简单的文件上传下载操作,于是就想着将网页内嵌到程序中,上传下载神马的就直接使用网页Web来完成就好了,本示例中将演示在MFC程序中内嵌一个htm ...
- OpenCV中如何提取不规则ROI区域, 手眼标定hand_eye_calibration
opencv提取ROI区域: 在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域.当Mask对象添加 ...
- mat opencv 修改roi_OpenCV中如何提取不规则ROI区域
点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...
最新文章
- Jquery之dom操作
- Python读取.set文件和.locs文件
- python外星人入侵游戏代码大全-Python游戏:外星人入侵游戏编程完整版!内附代码...
- eclipse中提交git总是要求输入用户名、密码
- python中list是什么类型_Python 入门系列 —— 13. List 类型简介
- 西门子标准报文1常用_基于Snap7使用C#编程访问西门子PLC系列教程(2)-S7协议
- Convert.ToInt32()与int.Parse()的区别 (转载)
- c++svd算法_AI算法工程师面试6
- PostgreSQL数值类型--浮点类型和序列
- Drawable和Bitmap的区别
- Python入门--特殊属性
- 在运行 Red Hat 或 Cent OS 的虚拟机中扩展逻辑卷
- 系统全面讲解word中选择性粘贴命令
- phpstorm 报 expecting statement
- 在 Airbnb 使用机器学习预测房源的价格
- 微软服务器登录不上,微软账号无法登录怎么办
- 组合数学——插板模型
- Matplotlib:设置坐标轴范围,刻度,位置,自定义刻度名称,添加数据标签
- EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
- 禁止网站开启F12 禁止调试代码方法