我们已经知道的是,使用copyTo函数可以得到一个复制的矩阵。

A.copyTo(B);

就可以得到和A一毛一样的矩阵B。当然需要事先声明B。并且两者可以互不相关的做各种操作。

copyTo还有一个重构函数copyTo(B,MASK)。意思是可以得到一个附加掩膜MASK的矩阵B。我们从图像的角度来看这个函数的作用。

首先需要生成一张掩膜MASK,一般情况下这个膜和你需要操作的对象图像一样大。生成方法见下面例子:

Mat MASK(A.rows,A.cols,CV_8UC3,Scalar(0,0,0));//生成一个三通道的彩色掩膜,初始化为黑色。

Mat  MASK(A. rows ,A. cols , CV_8UC1 , Scalar ( 0 ));//生成一个灰度的掩膜,初始化为黑色。

Mat MASK=Mat::zeros(A.size( ), CV_8UC3);//生成一个三通道的彩色掩膜,初始化为黑色。需要改成灰度的只需把CV_8UC3改为CV_8UC1。

对一幅图加一个掩膜顾名思义,就是想要盖住图片的某一部分。所以使用A.copyTo(B,MASK)之后得到的是A被MASK掩盖后的图像。因为初始化的掩膜时黑色的,如果直接加上去整个图片都会被掩盖了,所以需要把一部分你不想盖住的位置改成别的颜色。这里就可以用到前面的设置ROI的算法。

Mat mm=mask(Rect(0,0,mask.cols/2,mask.rows));//设置一个只有掩膜一半大小的ROI

mm={Scalar(255,255,255)};//把ROI中的像素值改为白色。

得到的掩膜效果如下图:

对于灰度图像,掩盖后在图像中掩膜中所有像素值对应为0的点变为黑色(被掩盖),其他点(所有非0值)和原来一致。

对于三通道彩色图像,某个通道中所有在掩膜中值为0的点在该通道上的像素值变为0,其他所有非0值保持和原来不变。例如当对绿色和蓝色通道加掩膜时会呈现一种图像被盖了一层红色的效果。(因为蓝色和绿色被掩盖了)

不管是灰度图像还是彩色图像,只有掩膜中像素值为0的点会对图像产生掩盖效果。

以下分别是黑色掩膜,红色掩膜的效果图:

opencv中copyTo函数的使用相关推荐

  1. Opencv中copyTo()函数的使用方法

    在Mat矩阵类的成员函数中copyTo(roi , mask)函数是非常有用的一个函数,尤其是后面的mask可以实现蒙版的功能,我们用几个实例来说明它的作用.我们要注意mask的数据类型,必须是CV_ ...

  2. OpenCV中initUndistortRectifyMap函数存在bug原因探究

    原文首发于公众号「3D视觉工坊」:OpenCV中initUndistortRectifyMap函数存在bug原因探究. 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下: # ...

  3. 转载:opencv中imshow函数运行中断的解决办法

    OpenCV中 imshow函数运行中断的解决方法 羊和咩咩 2017-03-10 16:00:49 5919 收藏 最后发布:2017-03-10 16:00:49首发:2017-03-10 16: ...

  4. 关于opencv中cvtcolor函数的code参数用CV_BGR2YUV与CV_BGR2YCrCb的了解

    根据Opencv中cvtcolor函数的源码描述,,参数CV_BGR2YCrCb用的系数为[1868, 9617, 4899, 11682, 9241], 而参数CV_BGR2YUV对应的系数只是将C ...

  5. 关于Opencv中Filter2D函数的补全方式

    目录 关于Opencv中Filter2D函数的补全方式 环境 验证 C++举例 Python举例 关于Opencv中Filter2D函数的补全方式 环境 OpenCV3.4.16(C++) openc ...

  6. imfilter c语言,opencv中cvFilter2D( ) 函数filter2D()函数与MATLAB中imfilter()函数的差异...

    出处: 1:cvFilter2D() 函数为opencv中c语言函数 2:filter2D()函数为opencv中c++函数 3:imfilter()函数为matlab版本函数 计算结果的异同: 2( ...

  7. Opencv中直方图函数calcHist

    Opencv中直方图函数calcHist calcHist函数在Opencv中是极难理解的一个函数,一方面是参数说明晦涩难懂,另一方面,说明书给出的实例也不足以令人完全搞清楚该函数的使用方式.最难理解 ...

  8. OpenCV中flip函数实现

    一.flip()函数原型介绍 void cv::flip(InputArray src,OutputArray dst, int flipCode) 各参数含义 src:输入图像. dst:输出图像. ...

  9. OpenCV的copyTo()函数讲解及应用

    Index 目录索引 写在前面 函数介绍 案例演示 参考文章 写在前面 继前文的setTo()函数讲解后,本文对和该函数用法类似的OpenCV中的copyTo()函数进行讲解. 函数介绍 可以直接在 ...

最新文章

  1. CSS + DIV 让页脚始终底部
  2. 闲话WPF之十(Dependency属性 [2] )
  3. 阿里数据人标配的高端鼠标垫,我的粉丝每人包邮送一块
  4. my log4crc
  5. 数值分析2.1 Gauss(高斯)消去法
  6. python mock server_Mock Server 入门
  7. 微信小程序 后端返回数据为字符串,转json方法
  8. 巧用Redis做游戏跨服排行榜
  9. Django——jinja2配置与使用
  10. 谈谈Fragment的用法之Fragment实现Tab切换中的那些事
  11. 长得像就是双胞胎?图样图森破
  12. QQ企业邮箱和QQ邮箱之间的区别
  13. Python开发-面向对象编程-王大鹏-专题视频课程
  14. hexo博客之yilia主题的个性化设置
  15. linux 设备树 usb控制器,linux 设备树中 dwc3 节点的phys参数含义
  16. android app自动卸载,无需ROOT 只需2招解决Android手机无法卸载的流氓APP
  17. 使用 rr 进行debug
  18. 为什么var可以重复声明
  19. avada functions.php,关于 AVADA 一些自定义的说明
  20. Eventid 27 错误!

热门文章

  1. 如何在excel中把汉字转换成拼音
  2. 后台获取文件并在浏览器下载
  3. java中获取视频时间方法
  4. 使用爱思助手制作越狱 U 盘
  5. 计量地理-求中值频率频数
  6. 【财富空间】Andrej Karpathy发文谈神经网络:这不仅仅是分类器,这是一种新的软件开发思想
  7. Android开启开发者选项和调试模式
  8. 纪念正月十六工作室博客总访问量突破百万
  9. 调用微信JS-SDK接口上传图片
  10. 小程序地图插入图标后 怎么实现点击图标弹出窗口