【发布时间】:2021-01-26 02:05:21
【问题描述】:
我有一个包含数百张图像的文件夹和另一个带有相应掩码的文件夹。图像和蒙版的名称都相同,例如image1.png 的掩码也被命名为“image1.png”。所有图像均为灰度。
我需要在循环中将蒙版叠加到原始图像上,但仅显示蒙版边界框,同时使蒙版的内表面完全透明以显示原始图像区域,如上所示。当前代码读取包含图像和蒙版的文件夹,但我需要按要求提供覆盖方面的帮助。
import pandas as pd
import cv2
import numpy as np
import glob
import os
images = glob.glob("images\*.png")
masks = glob.glob("masks\*.png")
images.sort()
masks.sort()
for f1,f2 in zip(images,masks):
img1 = cv2.imread(f1)
img2 = cv2.imread(f2)
img_1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img_2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
img_name = f2.split(os.sep)[-1]
contours, _ = cv2.findContours(img_2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
combined = cv2.drawContours(img_1, contours, -1, (0,255,0),1)
cv2.imwrite("combined/{}.png".format(img_name[:-4]),combined)
【问题讨论】:
-
请单独提供您的图片,而不是并排截屏。你还说有些东西需要有颜色,但在我看来一切都是灰色的?
-
我不明白您所说的彩色蒙版是什么意思。你的面具是黑白的。您是否只希望蒙版的轮廓在图像上显示为黑色。如果是这样,一种方法是获取蒙版的轮廓,然后将它们绘制在黑色图像上。
-
我编辑了我的代码以找到轮廓并将它们绘制在原始图像上。但是现在,我只得到最后一张存储的图像,并覆盖了相应的蒙版。除了最后一张图像和遮罩外,循环丢失了所有图像和遮罩。
-
您的面具是否总是 90° 矩形?因为那样找到轮廓真的是大材小用。
-
是的,它们是边界框(矩形)。我不需要颜色的边界框。图像和蒙版都是灰度图像。边界框也将是灰度的。
标签: python opencv image-processing overlay mask