如何解决将每个实例蒙版合并回原始图像Python
我有一堆蒙版(对象是白色,非对象是黑色),它们的边界框将其作为单独的图像,并且我试图将它们放回原始图像上的原始位置。我现在想到的是:
- 创建与原始图像大小相同的黑色图像。
- 将每个蒙版的值与原始图像上边界框的坐标值相加。
谁能告诉我我是否走了正确的道路,有没有更好的方法呢?
以下大致是我的实现
import cv2
black_img = np.zeros((height,width)) # A image that is of the size of the original but is all black
mask = cv2.imread("mask.png")
bbox = [x1,y1,x2,y2] # Pretend that this is a valid bounding box coordinate on the original image
black_img[y1:y2,x1:x2] += mask
例如: 我有第一张面具的照片。它的大小与原始图像上的边框相同。我正在尝试将每个蒙版合并回去,以便获得类似第二张图片的效果。
解决方法
我假设蒙版是0和1,并且您的图像是灰度的。另外,对于每个small_mask
,您都有一个对应的bbox
。
mask = np.zeros((height,width))
for small_mask,bbox in zip(masks,bboxes):
x1,y1,x2,y2 = bbox
mask[y1:y2,x1:x2] += small_mask
mask = ((mask>=1)*255.0).astype(np.uint8)
现在您将所有小口罩组合在一起了。
最后一行:
我的假设是两个遮罩可能会相交。因此这些交点的值可能大于1。mask >= 1
告诉我,大于0的像素将全部亮起。
我将其乘以255.0
,因为我想将其设置为白色。您将无法在灰度图像中看到1。
(mask >= 1)*255.0
将范围从[0-1]扩展到[0-255]。但是此值是float,不是图像类型。
.astype(np.uint8)
将float
转换为uint8
。现在,您可以毫无问题地执行所有图像操作。当它浮动时,您可能会遇到很多问题,例如绘图,保存,所有这些都会引起一些问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。