如何将图像蒙版叠加到原始图像上但仅显示蒙版边界框?
How to overlay image mask onto the original image but show only the mask bounding box?
我有一个包含数百张图像的文件夹和另一个包含相应遮罩的文件夹。图像和蒙版的名称相似,例如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)
我发现了问题。我需要在 for 循环中使用 Zip。我已经相应地更正了代码。
我有一个包含数百张图像的文件夹和另一个包含相应遮罩的文件夹。图像和蒙版的名称相似,例如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)
我发现了问题。我需要在 for 循环中使用 Zip。我已经相应地更正了代码。