我有这个面具:
假设我想用另一张图片做一个 bitwise_and 来填充白色:
cv::bitwise_and(srcImage, mask, dstImage, [mask???]);
现在,生成的图像是这样的:
这很好,但我想从结果中减去黑色。我已经看到 bitwise_and 也接受 8 位单 channel 图像,我不确定它的作用。我想如果它是 0 那么它就让它通过,否则它会忽略它。
那么我如何使用相同的掩码将其转换为 8 位图像并使用它来去除结果的黑色?我想要相同的图像,但基本上没有黑色边框。
最佳答案
解决方案非常简单。由于我对 openCV 库知之甚少,所以我没有使用正确的函数来完成任务。不过,我仍然不确定为什么在将掩码传递给 bitwise_and 方法时应用程序会崩溃。
基本上你所要做的就是:
image.copyTo(dst, mask);
这会将图像复制到 dst,甚至处理垫子的细节以赋予其与“图像”相同的属性。只需确保掩码是 8 位单 channel 图像即可。这样,当您调用该方法时,只有通过掩码的像素才会被复制到 dst。
这是获取更多信息的文档链接:copyTo
关于OpenCV 按位与+掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532924/