OpenCV copyTo()函数

简介: OpenCV copyTo()函数

copyTo()


函数原型


copyTo这个函数有两种定义方式,分别是:


void copyTo( OutputArray m ) const;
void copyTo( OutputArray m, InputArray mask ) const;


参数:


  • 一个参数:一张输出图像


  • 两个参数:一张输出图像和一个掩码图


简单示例


例如:


image_in.copyTo(image_out);


就是把image_in这张图复制(copy to)到image_out上。


又例如:


image_in.copyTo(image_out,mask);


则是不仅把image_in这张图复制(copy to)到image_out上,且image_in对应mask中像素值为0的像素点都不会贴到image_out上。


总结上述两个函数用法的作用:


  • 一个参数:表示将image_in矩阵复制到image_out中。


  • 两个参数:表示得到一个附加掩膜mask的矩阵image_out。


一个参数的很简单就是复制图像,上面读mask用法探究不深,那么我们继续来探究一下mask参数的用法


mask参数深入探究


例如下面用法代码:


A.copyTo(B, mask)


mask作为一个掩模板,如果在某个像素点(i, j)其值为1(只看第一通道,所以mask单通道即可),则把A.at(i, j)处的值直接赋给B.at(i, j),如果其值为0则B.at(i, j)处保留其原始像素值。这样能够使得图标边缘的颜色和原图保持一致。


例如下面具体用法


#include <iostream>
#include <math.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>  
using namespace cv;
using namespace std;
int main()
{
  Mat srcImage = imread("./test1.jpg");
  Mat dstImage = imread("./test.jpg");
  if (!srcImage.data || !dstImage.data)
  {
    cout << "could not load image !";
    return -1;
  }
  // namedWindow("图1原始图",);
  imshow("input_src1", srcImage);
  imshow("input_src2", dstImage);
  // 创建一个感兴趣区域
  Mat imageROI = srcImage(Rect(0, 0, dstImage.cols, dstImage.rows));
  // 加载掩模板
  Mat mask = imread("./test.jpg", 0);
  // 进行复制
  dstImage.copyTo(imageROI, mask);
  // 显示效果图
  imshow("out_put", srcImage);
  waitKey(0);
  return 0;
}


运行效果图:


相关文章
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
52 0
|
9月前
|
计算机视觉
OpenCV-图像翻转函数cv::filp
OpenCV-图像翻转函数cv::filp
|
2月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
61 0
|
9月前
|
计算机视觉 C++
OpenCV-计时函数cv::getTickCount&cv::getTickFrequency
OpenCV-计时函数cv::getTickCount&cv::getTickFrequency
|
2月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
75 0
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
57 0
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
38 0
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——2、逐帧播放视频(VideoCapture函数、waitKey函数、0xFF == ord(‘1‘))
OpenCV这么简单为啥不学——2、逐帧播放视频(VideoCapture函数、waitKey函数、0xFF == ord(‘1‘))
40 0
|
2月前
|
监控 API 图形学
OpenCV这么简单为啥不学——1、基础环境与imread函数
OpenCV这么简单为啥不学——1、基础环境与imread函数
38 0
|
2月前
|
计算机视觉 Python
OpenCV中阈值处理函数和二值化、反二值化的讲解及实战(附Python源码)
OpenCV中阈值处理函数和二值化、反二值化的讲解及实战(附Python源码)
160 0