OpenCV |
您所在的位置:网站首页 › opencv裁剪不规则区域 › OpenCV |
ROI(region of interest)——感兴趣区域。 1.用途 这个区域是图像分析所关注的重点。圈定这个区域,以便进行进一步的处理。而且,使用ROI指定 想读入的目标,可以减少处理时间,增加精度,给图像处理带来不小的便利。 2.定义ROI方法 使用表示矩阵区域的Rect。它指定矩阵的左上角坐标(构造函数的前两个参数)和矩阵的长宽(构造函数的后两个参数)以定义一个矩阵区域。 // 定义一个Mat类型并给定其设定的区域 Mat imageROI; // 方法一 imageROI = image(Rect(500, 250, logo.cols, logo.rows)); 指定感兴趣行或列的范围(Range)。Range是指从起索引到终止索引(不包括终止索引)的一连串连续序列。cRange可以用来定义Range。如果使用Range来定义ROI,那么前例中定义ROI的代码可以重写为: // 方法二 imageROI = image( Range(250, 250+logoImage.rows), Range(200, 200+logoImage.cols));3.切割具体步骤 将要切割下的图像区域局部设置为ROI void cvSetImageROI(IplImage* image,CvRect rect); 创建一个与切割图像大小相同的新图像 IplImage* cvCreateImage( CvSize size, int depth, int channels ); depth 图像元素的位深度,可以是下面的其中之一: IPL_DEPTH_8U 无符号8位整型 IPL_DEPTH_8S 有符号8位整型 IPL_DEPTH_16U 无符号16位整型 IPL_DEPTH_16S 有符号16位整型 IPL_DEPTH_32F 单精度浮点数 IPL_DEPTH_64F 双精度浮点数channels 每个元素(像素)通道数.可以是 1, 2, 3 或 4.通道是交叉存取的 将原图像复制到新图像中 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL ); 操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。函数cvCopy从输入数组中复制选定的成分到输出数组: 如果mask(I)!=0,则dst(I)=src(I)。 如果输入输出数组中的一个是IplImage类型的话,其ROI和COI将被使用。输入输出数组必须是同样的类型、维数和大小。函数也可以用来复制散列数组(这种情况下不支持mask)。 释放ROI区域 cvResetIamgeROI(src);4.实例 如何利用ROI将一幅图加到另一幅图的指定位置。 通过一个图像掩码,直接将插入处的像素设置为插入图像的像素值,这样效果会很逼真。 #include #include #include using namespace cv; using namespace std; bool ROI_AddImage(); bool LinearBlending(); bool ROI_LinearBlending(); void ShowHelpText(); int main( ) { system("color 6F"); if(ROI_AddImage( )&& LinearBlending( )&&ROI_LinearBlending( )) { cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |