分享

opencv实现ROI(c版)

 心情谷 2016-03-11

 

          虽然先前知道ROI区域是感兴趣区域,但是真正看到调用了OpenCV的cvSetImageROI函数时,并不知道它的作用,所以还是单独写了一段代码对这个函数进行探究。


OpenCVchm文档中对cvSetImageROI函数的介绍如下:

void cvSetImageROI( IplImage* image, CvRect rect );
image
图像.
rect
ROI 矩形.
函数 cvSetImageROI 基于给定的矩形设置图像的 ROI(感兴趣区域) . 如果ROI是NULL 并且参数RECT的值不等于整个图像, ROI被分配. 不像 COI, 大多数的 OpenCV 函数支持 ROI 并且处理它就像它是一个分离的图像 (例如, 所有的像素坐标从ROI的左上角或左下角(基于图像的结构)计算。

测试代码:

#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
void main()
{
	IplImage *res,*dst;
	CvRect rect;
	rect.x=130,rect.y=30,rect.width=200,rect.height=200;
	res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//载入一张图片
	dst=cvCreateImage(cvSize(200,200),8,3);//创建图像空间

	//创建窗口
	cvNamedWindow("res",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);

	//设置ROI区域
	cvSetImageROI(res,rect);

	//提取ROI
	cvCopy(res,dst);

	//取消设置
	cvResetImageROI(res);

	//显示图像
	cvShowImage("res",res);
	cvShowImage("dst",dst);
	cvWaitKey(0);

	cvDestroyWindow("res");
	cvDestroyWindow("dst");

	cvReleaseImage(&res);
	cvReleaseImage(&dst);



}


运行结果(res为原图,dst为提取的ROI区域):



个人总结:

   在对某IplImage图像用cvSetImageROI函数设置了ROI后,对图像的处理都将仅限于ROI区域,相当于该图像变为了ROI中的图像,测试代码值仅用cvCopy(复制图像的函数),进行了测试,实际上对于任何处理图像IplImage类型的函数,处理设置了ROI区域的图像类对象,都是处理它的ROI区域。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多