文章目录

  • 感兴趣区域(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区域相关推荐

  1. 【利用OpenCV-Python在图像中选择ROI区域并提取ROI坐标信息】

    [利用OpenCV-Python在图像中选择ROI区域并提取ROI坐标信息] 文前白话 代码: 效果: 文前白话 在图像中选定ROI区域进行进一步的功能开发,就需要提取到相应的ROI区域坐标,对于多边 ...

  2. 非MFC工程中使用MFC库

    需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console Application.MFC Application.Win32 Project等.在创建MFC工程时 ...

  3. mfc工程中添加com接口支持

    在普通的mfc工程中常常需要添加com接口支持.最典型的应用就是使用 com中的连接点机制时,需要在客户端实现事件接受器.简单说来,就是要实现在com服务器端声明的事件接口.这个接口由server端暴 ...

  4. 在MFC工程中新建一个对话框

    1.MFC简介 Microsoft Foundation Class微软基础类库,这个类集以层次结构组织起来,其中封装了发部分的Windows API函数和Windows控件,它所包含的功能设计整个W ...

  5. C++ Excel表格解析(一、MFC工程中的应用)

    一.前言 C++怎么解析Excel呢,这两天研究了一下,这一篇就来谈一谈MFC中如何解析Excel. 二.准备 2.1 代码结构 2.2 类说明 2.2.1 类型库 图中圈出来的这些类,都是一些自带的 ...

  6. VS2010 MFC工程中 错误提示: IntelliSense: 无法打开源文件 defines.h

    类似无法找到文件的问题都可以用这个方法解决,就是路径的问题.vc++2008的项目转到vc++2010也可能出现类似的问题. 解决方法: 在  项目属性=>配置属性=>C/C++  =&g ...

  7. OpenCV-如何提取出图片ROI区域

    根据项目需要,提取视频中的ROI区域进行处理,对于无关区域可以屏蔽掉.主要原理是把原始帧中的ROI定位(如帧差法.背景减除法找出轮廓矩形)后复制到一个黑色背景中,再进行后续预处理. 这里只是以图片为例 ...

  8. mfc 内嵌 本地html,MFC程序中内嵌网页,附示例工程

    最近在课程设计,因为小悠太懒了,是在不想用C++完成一些简单的文件上传下载操作,于是就想着将网页内嵌到程序中,上传下载神马的就直接使用网页Web来完成就好了,本示例中将演示在MFC程序中内嵌一个htm ...

  9. OpenCV中如何提取不规则ROI区域, 手眼标定hand_eye_calibration

    opencv提取ROI区域: 在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域.当Mask对象添加 ...

  10. mat opencv 修改roi_OpenCV中如何提取不规则ROI区域

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...

最新文章

  1. Jquery之dom操作
  2. Python读取.set文件和.locs文件
  3. python外星人入侵游戏代码大全-Python游戏:外星人入侵游戏编程完整版!内附代码...
  4. eclipse中提交git总是要求输入用户名、密码
  5. python中list是什么类型_Python 入门系列 —— 13. List 类型简介
  6. 西门子标准报文1常用_基于Snap7使用C#编程访问西门子PLC系列教程(2)-S7协议
  7. Convert.ToInt32()与int.Parse()的区别 (转载)
  8. c++svd算法_AI算法工程师面试6
  9. PostgreSQL数值类型--浮点类型和序列
  10. Drawable和Bitmap的区别
  11. Python入门--特殊属性
  12. 在运行 Red Hat 或 Cent OS 的虚拟机中扩展逻辑卷
  13. 系统全面讲解word中选择性粘贴命令
  14. phpstorm 报 expecting statement
  15. 在 Airbnb 使用机器学习预测房源的价格
  16. 微软服务器登录不上,微软账号无法登录怎么办
  17. 组合数学——插板模型
  18. Matplotlib:设置坐标轴范围,刻度,位置,自定义刻度名称,添加数据标签
  19. EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
  20. 禁止网站开启F12 禁止调试代码方法

热门文章

  1. 噪声调相干扰matlab程序,噪声调相干扰信号的性能仿真
  2. 如何快速计算出三相电流的数值呢
  3. 使用 Python 全栈打造淘宝客微信机器人(上)
  4. 香蕉派安装64位linux,BANANA PI 入门:香蕉派如何安装系统
  5. a与a的共轭转置相乘_线性代数A矩阵乘以A的转置的含义或者几何意义
  6. 使用apt更新和升级系统软件
  7. 2022保密教育线上培训考试参考答案 05
  8. 聚类算法小结(1)——K均值聚类算法
  9. Hello World · GitHub 指南
  10. Netapp存储日常检查及信息收集