更好的方法通过openCV创建一个矩形蒙版 [英] Better ways to create a rectangular mask by openCV

查看:230
本文介绍了更好的方法通过openCV创建一个矩形蒙版的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在openCV中创建掩码

Creating a mask in openCV

      /** result I want
          0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0
          0 0 1 1 1 1 0 0
          0 0 1 1 1 1 0 0
          0 0 1 1 1 1 0 0
          0 0 1 1 1 1 0 0
          0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0
      */    
cv::Mat mask = cv::Mat::zeros(8, 8, CV_8U);
std::cout<<"before : \n"<<mask<<std::endl;
for(int i = 2; i != 6; ++i)
{
     auto ptr = mask.ptr<uchar>(i) + 2;
     for(int j = 0; j != 4; ++j)
     {
         *ptr++ = 1;
     }
}
std::cout<<"after : \n"<<mask<<std::endl;   

do openCV提供给我们任何构建函数来创建一个这样的面具?
创建一个函数fot这个任务很简单,但openCV
的函数总是比天真的手工代码更快。

Do openCV provide us any build in function to create a mask like this? It is trivial to create a function fot this task, but the function of openCV always faster than naive handcrafted codes

推荐答案

当然,有一个更简单的方法,使用roi运算符:

sure, there's an easier way, use the roi operator:

cv::Mat mask = cv::Mat::zeros(8, 8, CV_8U); // all 0
mask(Rect(2,2,4,4)) = 1;

完成!

这篇关于更好的方法通过openCV创建一个矩形蒙版的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆