前段时间在OPENCV中做一个小东西,使用到子图像的提取和拷贝,一时间没有找到好的方法,要么直接访问像素进行赋值,要么通过数组来转换,总是感觉别扭,后来终于弄清了一个比较简单的方法,需要利用一下OPENCV中的ROI方法,该方法对于任何格式的灰度或者彩色图像均适用
/*F///
名称: cvGetSubImage
功能: 求输入图像的子图像
算法:
参数:
image - 输入图像
roi - 子图像的定义区域,region of interests
返回:
如果成功,返回创建好的子图像
注意事项:
子图像在函数中创建,用完后需要释放内存.
//F*/
IplImage* cvGetSubImage(IplImage *image, CvRect roi)
{
IplImage *result;
// 设置 ROI
cvSetImageROI(image,roi);
// 创建子图像
result = cvCreateImage( cvSize(roi.width, roi.height), image->depth, image->nChannels );
cvCopy(image,result);
cvResetImageROI(image);
return result;
}
/*F///
名称: cvGetSubImage
功能: 求输入图像的子图像
算法:
参数:
image - 输入图像
roi - 子图像的定义区域,region of interests
返回:
如果成功,返回创建好的子图像
注意事项:
子图像在函数中创建,用完后需要释放内存.
//F*/
IplImage* cvGetSubImage(IplImage *image, CvRect roi)
{
IplImage *result;
// 设置 ROI
cvSetImageROI(image,roi);
// 创建子图像
result = cvCreateImage( cvSize(roi.width, roi.height), image->depth, image->nChannels );
cvCopy(image,result);
cvResetImageROI(image);
return result;
}