SetImageROI函数设置ROI区域的作用及用法

来源:互联网 发布:淘宝优惠券怎么赠送 编辑:程序博客网 时间:2024/06/07 18:31

原文:http://blog.csdn.net/futurewu/article/details/9836169

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


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

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

测试代码:

[cpp] view plaincopy
  1. #include<cv.h>  
  2. #include<cxcore.h>  
  3. #include<highgui.h>  
  4. void main()  
  5. {  
  6.     IplImage *res,*dst;  
  7.     CvRect rect;  
  8.     rect.x=130,rect.y=30,rect.width=200,rect.height=200;  
  9.     res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//载入一张图片  
  10.     dst=cvCreateImage(cvSize(200,200),8,3);//创建图像空间  
  11.   
  12.     //创建窗口  
  13.     cvNamedWindow("res",CV_WINDOW_AUTOSIZE);  
  14.     cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);  
  15.   
  16.     //设置ROI区域  
  17.     cvSetImageROI(res,rect);  
  18.   
  19.     //提取ROI  
  20.     cvCopy(res,dst);  
  21.   
  22.     //取消设置  
  23.     cvResetImageROI(res);  
  24.   
  25.     //显示图像  
  26.     cvShowImage("res",res);  
  27.     cvShowImage("dst",dst);  
  28.     cvWaitKey(0);  
  29.   
  30.     cvDestroyWindow("res");  
  31.     cvDestroyWindow("dst");  
  32.   
  33.     cvReleaseImage(&res);  
  34.     cvReleaseImage(&dst);  
  35.   
  36.   
  37.   
  38. }  


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



个人总结:

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


原创粉丝点击