OpenCV实现对图片的切割

从一幅大图像中,取出一小块图像并保存这一个小块图像。


代码如下:
/* 读取大图像 */
IplImage *img1 = cvLoadImage("test.jpg", 1);


/* 设置图像的ROI区域,注意ROI区域不要越界,必须在大图像的内部 */

int height = src->height;
int width = src->width;
cvSetImageROI(img1, cvRect(width/5, height/5, 3*width/5, 3*height/5));


/* 为小图像分配内存空间    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);


最后就得到图片img1的一个子图img2,可以根据这个方法对图片进行任意的分割

你可能感兴趣的:(OpenCV)