opencv —— copyTo 设置与操作感兴趣区域(ROI)

感兴趣区域:ROI

对感兴趣区域进行的一系列操作,相当于直接在原图相应部分进行操作。

 Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage.rows));
  • srcImage 为原图像
  • Rect(0,0,dstImage.cols, dstImage.rows) 在原图像上寻一片矩形区域,左上角坐标为(0,0),长为 dstImage.cols,宽为 dstImage.rows

 

src.copyTo(dst, mask) 或 src.copyTo(dst)

可将 src 拷贝到 dst 上 

  • 若有 mask,将原图(src)与 mask 进行运算后得到的结果拷贝给 dst。其中,mask 必须为 CV_8U 类型,且大小与 src、dst 一致。

在位置(x,y)时,如果 mask 的像素值不等于 0,则 dst(x,y) = src(x,y);

如果 mask 的像素值等于 0,则 dst(x,y) = 0;(对于三通道的彩色图也适用)

  • 若没有 mask,直接将 src 拷贝给 dst,同时要求 src 与 dst 大小一致。

 

代码示例:

#include <opencv.hpp>
using namespace cv;
int main(){ Mat srcImage = imread("1.jpg"); Mat dstImage = imread("2.jpg"); imshow("图1原始图", srcImage); imshow("图2原始图", dstImage); //创建一个感兴趣区域 Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage.rows)); //加载掩模板 Mat mask = imread("2.jpg", 0); //进行复制 dstImage.copyTo(imageROI, mask); //显示效果图 imshow("效果图为",srcImage); waitKey(0); }

 

 

 

posted @ 2020-02-10 18:57  狂奔的小学生  阅读(2480)  评论(0编辑  收藏  举报