OpenCV

您所在的位置:网站首页 opencv裁剪不规则区域 OpenCV

OpenCV

2023-03-25 02:00| 来源: 网络整理| 查看: 265

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