对图像设定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"); }
时间: 2024-10-27 07:34:28