您的位置:首页 > 运维架构

【OpenCV】复制、切割出图像ROI区域

2015-04-15 12:48 330 查看
对图像设定ROI的函数是:
cvSetImageROI(IplImage* src,CvRect rect);
src 表示的是源图像,
rect 指的是ROI区域。如果要取消ROI区域,那么使用函数:
cvResetImageROI(IplImage* src);
这个函数,就把src上的ROI区域取消掉。

举例:

#include <opencv/cv.h>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
// 从一幅大图像中,取出一小块图像。
int main()
{
/* 读取大图像 */
IplImage *img1 = cvLoadImage("C:\\Users\\Liu\\Desktop\\a2.bmp", -1);
cvNamedWindow("Cut", CV_WINDOW_AUTOSIZE );
cvShowImage("原图",img1);
/* 设置图像的ROI区域
注意ROI区域不要越界,必须在大图像的内部 */
cvSetImageROI(img1, cvRect(214, 78,100,100));
/* 为小图像分配内存空间
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);
cvShowImage("子图",img2);
cvWaitKey(0);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvDestroyWindow("Example1");
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV 图像处理