OpenCv_Image与光流法中设置ROI区域


【原创】Liu_LongPo 转载请注明出处
【CSDN】http://blog.csdn.net/llp1992

无论是在图片显示中或者是在光流法寻找角点的过程中,我们都会遇到ROI这个东西。它的作用就是让我们能够专注于图像或者当前视频帧中的某一块区域(我们称之为感兴趣区域) 进行处理,而不是对整个图像或者是整个视频帧进行处理,这不仅能够排除掉一些不必要的误差干扰,还能减少运算量。接下来分别说明来图像和光流法视频中如何设置ROI.

图像设置ROI

代码如下:

/*
* Description : setting ROI in image 
* Author : Liulongpo
* Date : 2015年3月8日19:50:26
*
*/

#include <cv.h>
#include <highgui.h>
using namespace std;


int main (int argc, char **argv)
{  
    // 加载原图像
    IplImage* img = cvLoadImage("F://12.jpg");
    // 创建新的要显示感兴趣区域的图像
    IplImage* img2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3); 
    // 创建感兴趣ROI矩形区域
    CvRect rect = cvRect(100,100,500,500);
    cvCopy(img,img2);
    cvSetImageROI(img2,rect);
    cvNamedWindow("源图像",1);
    cvShowImage("源图像",img);
    cvNamedWindow("ROI图像",1);
    cvShowImage("ROI图像",img2);
    while(1)
    {
        if(cvWaitKey(100) == 27)
            break;
    }
    cvDestroyWindow("源图像");
    cvDestroyWindow("ROI图像");
    cvReleaseImage(&img);
    cvReleaseImage(&img2);
}

显示效果如下图:

这里写图片描述

左边的是原来的图像,右边是设置ROI区域显示的图像

接下来说说光流法中如何设置ROI区域,这个对于运用光流法进行运动物体检测跟踪的去噪有着非常重要的作用。

看代码:

/*
* Description : Tracking Moving object based on optical flow 
* Author : Liulongpo
* Date : 20153819:50:26
*
*/

...

    // 设置感兴趣的区域,过滤掉不相关的部分
    // 感兴趣区域为 左上角坐标(700,0) 宽度为900,高度为2000的矩形
    CvRect rect= cvRect(700,0,900,2000);
    IplImage *ImageROI = cvCreateImage(cvGetSize(cvQueryFrame(capture)),IPL_DEPTH_8U,1);
    // 初始化图像,图像矩阵的所有值都为0
    cvZero(ImageROI);
    // 设置图像的感兴趣区域
    cvSetImageROI(ImageROI, rect);
    // 这句是必须的,否则无法画出角点
    cvSet(ImageROI,cvScalar(255)); 
    // 释放图像image中被设定的感兴趣区域ROI,与cvSetImageROI相对应
    cvResetImageROI(ImageROI);
...

// 光流检测
        cvGoodFeaturesToTrack (src_img1, eig_img, temp_img, g_corners1, &corner_count, qLevel, minDist, ImageROI);

效果如下:

这里写图片描述

这是运用ROI去除不关注部分后的光流法跟踪效果。

这里写图片描述

第二幅图就是我们感兴趣的区域矩形,这里的截图是当视频源出现抖动时,描绘出来的角点,只是为了看出ROI局域而截图。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值