opencv roi

来源:互联网 发布:网络支付限额什么意思 编辑:程序博客网 时间:2024/05/16 07:22
Opencv中的ROI介绍

ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续的程序需要单独处理这一个小区域,如图所示

ROI非常有用,例如我们想把图像中的人脸扣出来,进行人脸识别。需要注意的时候,ROI一定在图像内部,而不能超出图像的范围。


对图像设定ROI的函数是:


cvSetImageROI(IplImage* src,CvRect rect);
src表示的是源图像,rect只的是ROI区域。


如果要取消ROI区域,那么使用函数:


cvResetImageROI(IplImage* src);
这个函数,就把src上的ROI区域取消掉。

例子1:
从一幅大图像中,取出一小块图像并保存这一个小块图像。
代码如下:
/* 读取大图像 */
IplImage *img1 = cvLoadImage("elvita.jpg", 1);

/* 设置图像的ROI区域
   注意ROI区域不要越界,必须在大图像的内部 */
cvSetImageROI(img1, cvRect(10, 15, 150, 250));

/* 为小图像分配内存空间
   cvGetSize(img1)返回的是一个CvSize结构体,意思就是返回了图像img1的宽度和高度,由于
img已经设置了ROI,所以cvGetSize函数对ROI区域有效,所以,返回的是ROI区域的宽度和高度 */
IplImage *img2 = cvCreateImage(cvGetSize(img1),
                               img1->depth,
                               img1->nChannels);

/* 把img1的ROI区域拷贝到img2*/
cvCopy(img1, img2, NULL);

/* 取消img1上的ROI区域 */
cvResetImageROI(img1);