6

我有这个面具:

面具

假设我想用另一个图像制作一个 bitwise_and 来填充白色,这样可以:

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

现在,生成的图像显示如下:

图像 + 蒙版

这很好,花花公子,但我想从结果中减去黑色。我已经看到 bitwise_and 也接受 8 位单通道图像,我不确定它的作用。我想如果它是 0 那么它就让它通过,否则它会忽略它。

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

4

2 回答 2

8

解决方案非常简单。由于我对 openCV 库知之甚少,因此我没有为该任务使用正确的函数。我仍然不确定为什么在将掩码传递给 bitwise_and 方法时应用程序崩溃了。

基本上你所要做的就是:

image.copyTo(dst, mask);

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

这是有关更多信息的文档链接:copyTo

于 2012-07-26T13:18:04.327 回答
0

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

然后使用“AND”方法

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

那么问题就解决了。

于 2017-08-06T13:22:05.590 回答