OpenCV中cvAdds和cvAdd中的mask的用法探讨

Fn :

包含 mask 参数的一些函数如下 [摘自opencv 2.3.1版本 C++]

  • void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)
  • subtract
  • bitwise_and, bitwise_not, bitwise_or, bitwise_xor
  • mean, menStdDev
  • minMaxLoc
  • norm, normalize
  • grabCut
  • calcHist

Quote :

mask – Optional operation mask, 8-bit single channel array, that specifies elements of the destination array to be changed. [From OpenCV2.3.1 Doc]

mask 是一个8位的单通道数组,它指定了目标数组哪些元素会被修改。以 add 函数为例,请见 Code


Code :

   1: /*
   2:     Author : Ggicci
   3:     Date   : 2012.07.20
   4:     Title  : How to use opencv's parameter - mask ?
   5: */
   6: int main()
   7: {    
   8:     Mat m(10, 10, CV_8U);
   9:     //RNG类对象rng, 以统一分布(Uniform Distribution)随机填充矩阵 m 和 n
  10:     cv::RNG rng;
  11:     rng.fill(m, RNG::UNIFORM, 0, 10);
  12:     cout << "m = " << endl << m << endl << endl;
  13: 
  14:     Mat n(10, 10, CV_8U);
  15:     rng.fill(n, RNG::UNIFORM, 8, 10);
  16:     cout << "n = " << endl << n << endl << endl;
  17:     
  18:     Mat dst;
  19:     //指定 mask
  20:     Mat mask(10, 10, CV_8U, Scalar(0));
  21:     Mat specified(mask, Rect(2, 5, 4, 4));
  22:     specified.setTo(1);
  23:     cout << "mask = " << endl << mask << endl << endl;
  24: 
  25:     cv::add(m, n, dst, mask);
  26:     cout << "dst = " << endl << dst << endl << endl;
  27: 
  28:     return 0;
  29: }

Output :

   1: m =
   2: [6, 7, 9, 9, 7, 0, 6, 3, 6, 9;
   3:   1, 8, 7, 8, 5, 3, 8, 1, 7, 3;
   4:   3, 3, 5, 4, 8, 2, 6, 1, 2, 2;
   5:   6, 1, 0, 7, 3, 5, 0, 6, 3, 3;
   6:   7, 5, 0, 5, 3, 0, 2, 7, 1, 7;
   7:   9, 8, 8, 3, 9, 5, 4, 1, 8, 3;
   8:   8, 1, 8, 7, 7, 0, 3, 8, 8, 3;
   9:   8, 9, 5, 1, 1, 3, 3, 3, 4, 7;
  10:   2, 7, 6, 8, 2, 4, 9, 5, 6, 1;
  11:   5, 0, 5, 7, 8, 4, 1, 0, 4, 8]
  12: 
  13: n =
  14: [9, 8, 9, 8, 8, 9, 9, 9, 9, 9;
  15:   9, 9, 9, 9, 9, 8, 8, 9, 9, 9;
  16:   8, 8, 9, 9, 8, 9, 9, 9, 8, 9;
  17:   9, 9, 8, 9, 9, 8, 8, 8, 8, 8;
  18:   8, 8, 9, 8, 9, 9, 8, 8, 8, 8;
  19:   9, 9, 9, 9, 8, 8, 8, 9, 9, 8;
  20:   9, 9, 8, 8, 8, 9, 9, 8, 8, 9;
  21:   9, 8, 9, 9, 8, 9, 8, 9, 9, 8;
  22:   9, 8, 9, 9, 9, 9, 8, 9, 8, 8;
  23:   8, 8, 9, 9, 9, 8, 9, 8, 9, 9]
  24: 
  25: mask =
  26: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  27:   0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  28:   0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  29:   0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  30:   0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  31:   0, 0, 1, 1, 1, 1, 0, 0, 0, 0;
  32:   0, 0, 1, 1, 1, 1, 0, 0, 0, 0;
  33:   0, 0, 1, 1, 1, 1, 0, 0, 0, 0;
  34:   0, 0, 1, 1, 1, 1, 0, 0, 0, 0;
  35:   0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  36: 
  37: dst =
  38: [205, 205, 205, 205, 205, 205, 205, 205, 205, 205;
  39:   205, 205, 205, 205, 205, 205, 205, 205, 205, 205;
  40:   205, 205, 205, 205, 205, 205, 205, 205, 205, 205;
  41:   205, 205, 205, 205, 205, 205, 205, 205, 205, 205;
  42:   205, 205, 205, 205, 205, 205, 205, 205, 205, 205;
  43:   205, 205, 17, 12, 17, 13, 205, 205, 205, 205;
  44:   205, 205, 16, 15, 15, 9, 205, 205, 205, 205;
  45:   205, 205, 14, 10, 9, 12, 205, 205, 205, 205;
  46:   205, 205, 15, 17, 11, 13, 205, 205, 205, 205;
  47:   205, 205, 205, 205, 205, 205, 205, 205, 205, 205]
  48: 
  49: 请按任意键继续. . .//mask的红色部分指定了dst被修改的部分(同样以红色标出),其余部分为dst的初始化值

OpenCV中cvAdds和cvAdd中的mask的用法探讨相关推荐

  1. 使用OpenCV和Python从图像中提取形状

    Welcome to the first post in this series of blogs on extracting features from images using OpenCV an ...

  2. 要点初见:Python+OpenCV校正并提取表格中的各个框

    最近做了个手写汉字简历识别比赛,需要先提取表格中含有指定信息的各个框,再用TensorFlow对框中的信息进行汉字.数字.英文识别.代码已开源:https://github.com/BingLiHan ...

  3. 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)

    使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...

  4. 【从零学习OpenCV 4】安装过程中问题解决方案

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门 ...

  5. opencv:在二维定标中的应用

    [写在前面] opencv在二维定标中的应用 参考链接: http://www.cnblogs.com/chita/ OPENCV立体标定 https://wenku.baidu.com/view/e ...

  6. OpenCV使用dnn从图像中解析人体部位的实例(附完整代码)

    OpenCV使用dnn从图像中解析人体部位的实例 OpenCV使用dnn从图像中解析人体部位的实例 OpenCV使用dnn从图像中解析人体部位的实例 #include <opencv2/dnn. ...

  7. OpenCV在相机或图像中检测QR码的实例(附完整代码)

    OpenCV在相机或图像中检测QR码的实例 OpenCV在相机或图像中检测QR码的实例 OpenCV在相机或图像中检测QR码的实例 #include "opencv2/objdetect.h ...

  8. MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)

    MFC使用OpenCV在文档窗口中显示图像     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/72550659 在VS ...

  9. opencv 从原始的图像中找出ROI区域

    http://blog.csdn.net/chentravelling/article/details/45331225 opencv 从原始的图像中找出ROI区域 #include <iost ...

最新文章

  1. 阿里无人车配送快递突破 100 万单,小蛮驴牵引的自动驾驶战略布局
  2. Blog_mini完整部署文档
  3. python安装pyopenssl
  4. 首次摆脱对梯度的依赖,CMU等开源Score-CAM:基于置信分数的视觉可解释性
  5. 当心XML文件中的非法字符
  6. Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】
  7. RN的stylesheet的属性及方法
  8. 浏览器的控制台-----后期更新
  9. 如何保证缓存与数据库双写时的数据一致性?
  10. php 9 698.00,698-00-0|2-溴-N,N-二甲基苯胺|2-bromo-N,N-dimethylaniline|2-Bromo-N,N-dimethylaniline......
  11. day14_html和css
  12. 边缘计算:你应该知道的三个趋势
  13. ibm服务器面板显示,IBM System x服务器前面板指示灯说明(新版)
  14. matlab 积分 例子,[Matlab]使用arrayfun对矩阵表达式积分的例子
  15. 三郎前端特效学习源代码:图片主页轮播组件
  16. Win10家庭版如何正确关闭自动更新
  17. 我在CSDN发表原创文章,被别人拿去发了一篇北大核心,论文难道就是东拼西凑?
  18. js代码中用单个字母命名
  19. RISC-V E300 SOC架构介绍——4.时钟产生
  20. EMC经典问答85问(1-5问)

热门文章

  1. iOS 远程通知(Remote Notification)和本地通知(Local Notification)
  2. vs2010 学习Silverlight学习笔记(15):数据与通信之JSON
  3. vue子组件改变父组件的值
  4. gradle项目打war和jar包
  5. python 需求分析
  6. Grafana分析Nginx日志
  7. mysql数据备份常用命令
  8. sql中exists替换in的区别
  9. Flex读取XML配置文件
  10. 动态引用webservice