python - 从图像中切出或移除遇到蒙版黑色像素的像素
问题描述
我正在尝试使用 Python 用 OpenCV 剪切两个图像。
这个想法是使用这样的图像:
作为面具。注意:这只是一个例子。
因此,如果我将此蒙版减去另一个图像,我将得到一个原始像素仅位于与蒙版中的白色矩形相同的位置的图像。因此,我们的想法是从第一张图像中删除与蒙版中黑色像素相同位置的像素。
我该怎么做?
也许我可以在两个图像之间进行AND操作(掩码只有 0(黑色)和 1(白色像素)。
解决方案
如果您要问的是如何使蒙版为黑色的图像透明而蒙版为白色的不透明,那么只需将蒙版添加到输入的 Alpha 通道即可。以下是如何在 Python/OpenCV 中执行此操作。(根据 Mark Setchell 的评论修订)
输入:
面具:
import cv2
import numpy as np
# load image
img = cv2.imread('lena.png')
# load mask as grayscale
mask = cv2.imread('rect_mask.png', cv2.COLOR_BGR2GRAY)
# put mask into alpha channel of image
#result = img.copy()
#result = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
#result[:, :, 3] = mask
result = np.dstack((img, mask))
# save resulting masked image
cv2.imwrite('lena_masked.png', result)
结果:
推荐阅读
- kubernetes - Kubespray:Netchecker 连接检查失败
- java - Maven依赖问题?
- c++ - Included Class Type 显然没有声明,为什么?
- jestjs - 在测试中加载模块时,如何使用 Jest 测试将 pino 调试日志写入标准输出?
- swiftui - SwiftUI tapGesture 是不是超级贪心?
- android - 如何在音频过程中使用超强时间拉伸课程
- c++ - 如何在多线程中正确使用 unique_ptr 进行多态性?
- jmeter - JMeter Listener - 仅在发生错误时创建错误文件
- javascript - 如何解决无法在Jquery Datatable中设置未定义的属性'_DT_CellIndex'
- android-studio - 在 Flutter 中显示 ListView 的内容并显示从画廊上传的图像