【发布时间】:2015-07-09 09:52:56
【问题描述】:
我编写了一个实时检测正方形(白色)并在其周围绘制框架的代码。正方形长度为 l 的每一边被分成 7 个部分。然后我在从垂直于三角形边(蓝色)的偏差演变而来的六个点上画一条长度为 h=l/7 的线。角标为红色。然后看起来像这样:
为了绘制蓝线和圆圈,我有一个 3 通道 (CV_8UC3) 矩阵 drawing,除了红线、蓝线和白线的位置外,其他所有位置都为零。然后我将这个矩阵放在我的网络摄像头图像上的方法是使用 opencv 的addWeighted 函数。
addWeighted( drawing, 1, webcam_img, 1, 0.0, dst); (Description for addWeighted here)。
但是,正如您所看到的,我得到的效果是,我的破折号和圆圈的颜色在黑色区域之外是错误的(在黑色区域内可能也不正确,但在那里更好)。它为什么会发生是完全有道理的,因为它只是将矩阵与权重相加。
我希望矩阵drawing 在我的图像上具有正确的颜色。问题是,我不知道如何解决它。我不知何故需要一个面具drawing_mask,我的破折号在某种程度上叠加到我的相机图像上。在 Matlab 中类似于 dst=webcam_img; dst(drawing>0)=drawing(drawing>0);
有人知道如何在 C++ 中执行此操作吗?
【问题讨论】:
标签: c++ algorithm opencv image-processing mask