OpenCV按位与+掩码

6
我来翻译这段关于IT技术的内容。请看下面:

我有这个口罩:

mask

假设我想对另一张图像进行 bitwise_and 运算,以填充白色区域,可以使用以下代码:

cv::bitwise_and(srcImage, mask, dstImage, [mask???]);

现在,生成的图像看起来像这样: Image + Mask 这很好,但是我想从结果中减去黑色。我看到 bitwise_and 也接受 8 位单通道图像,但我不确定它的作用是什么。我想如果它是 0,那么它就让它通过,否则它就忽略它。
那么我应该如何使用相同的掩码将其转换为 8 位图像,并使用它来消除结果中的黑色?我想要相同的图像,但基本上没有黑色边框。
2个回答

8

解决方案非常简单。由于我对openCV库不太了解,所以我没有使用正确的函数来完成任务。但我仍然不确定为什么在将掩码传递给bitwise_and方法时应用程序会崩溃。

基本上,您只需要执行以下操作:

image.copyTo(dst, mask);

这将会复制图片到dst,甚至处理mat的细节以使其具有与'image'相同的属性。只需确保mask是一个8位单通道图像。这样,当您调用该方法时,只有通过mask的像素才会被复制到dst。
更多信息请查看文档链接:copyTo

0

只需创建一个比fox_image更大的新画布

然后使用“AND”方法

或者,您可以将第一张图像的黑色部分转换为白色:0 ---255

然后,问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接