OpenCV 按位与+掩码

标签 opencv

我有这个面具:

mask

假设我想用另一张图片做一个 bitwise_and 来填充白色:

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

现在,生成的图像是这样的:

Image + 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/

相关文章:

c++ - 在输出窗口中显示三个图像而不是一个

从基于 OpenCV 静态库的项目创建可移植静态库

c++ - 将图像划分为包含对象的框

python - 根据图像 numpy 数组中饱和度和值的色调值计算颜色可见性

android - 配置 OpenCV 时出错。当我运行该应用程序时,它显示我有 cpp 文件,但它们没有使用受支持的 native 构建系统

python - pip 升级cv2

c++ - 如何在黑色区域opencv(C++)中找到矩形

c# - 如何使用 opencv 均衡图像的对比度和亮度?

python - 对于 OpenCV,我的 Python 代码可以显示网络摄像头,但我的 C++ 不能

python - 从 OpenCV 返回的某个 numpy 数组中获取元素?