OpenCV中的函数参数中的mask的异同

所谓mask,就是我们常常说到的掩膜,在opencv中,利用掩膜,我们可以完成对图像ROI的局部操作;可以对图像进行滤波;可以在进行特征匹配的绘制时仅选取匹配较好的点进行绘制。总之,掩膜的很大一种用途是对Mat的元素进行精确的部分选中操作。
然而,在不同的函数中mask的数据类型不同,现举两个例子:

1.drawMatches中的mask

void drawMatches( InputArray img1, const std::vector<KeyPoint>& keypoints1,
                             InputArray img2, const std::vector<KeyPoint>& keypoints2,
                             const std::vector<DMatch>& matches1to2, InputOutputArray outImg,
                             const Scalar& matchColor=Scalar::all(-1), const Scalar& singlePointColor=Scalar::all(-1),
                             const std::vector<char>& matchesMask=std::vector<char>(), int flags=DrawMatchesFlags::DEFAULT );

该函数用于绘制特征匹配结果,他的mask的类型是

vector<char>

因此我们这样初始化mask:

vector<char> mask;

2.findFundamentalMat、findHomography中的mask

cv::Mat cv::findFundamentalMat( InputArray _points1, InputArray _points2,
                               OutputArray _mask, int method, double param1, double param2 )

可见,mask是一个OutputArray类型的变量,应为一个1×n或n×1的Mat变量。

之前在编程时把两个函数的mask用法搞混了,半天没发现错在哪儿…一看函数的定义才反应过来…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值