OpenCV bitwise_and + mask

时间:2012-07-18 01:01:16

标签: opencv

我有这个面具:

mask

假设我想用bitwise_and和另一个图像来填充白色的效果:

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

现在,生成的图像给出了这样的结果:

Image + Mask

这很好,花花公子,但我想从结果中减去黑色。我已经看到了bitwise_并且还接受了一个8位单通道图像,我不确定它是做什么的。我想如果它是0然后让它通过,否则它会忽略它。

那么我如何使用相同的掩码将其转换为8位图像并使用它来删除结果的黑色?我想要相同的图像,但基本上没有黑色边框。

2 个答案:

答案 0 :(得分:8)

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

基本上你所要做的就是以下几点:

image.copyTo(dst, mask);

这会将图像复制到dst,甚至可以处理垫子的细节,使其具有与“图像”相同的属性。只需要确保掩码是一个8位单通道图像。这样,当您调用方法时,只有通过掩码的像素才会被复制到dst。

以下是doc链接以获取更多信息:copyTo

答案 1 :(得分:0)

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

然后使用“AND”方法

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

然后,问题就会解决。