Python 如何将图像遮罩覆盖到原始图像上,但仅显示遮罩边界框?
我有一个包含数百幅图像的文件夹和另一个带有相应遮罩的文件夹。图像和遮罩的名称相同,例如,image1.png的遮罩也被命名为“image1.png”。所有图像都是灰度的 我需要在循环中将遮罩覆盖到原始图像上,但只显示遮罩边界框,同时使遮罩的内表面完全透明以显示原始图像区域,如上图所示。当前代码读取包含图像和遮罩的文件夹,但我需要根据请求帮助覆盖Python 如何将图像遮罩覆盖到原始图像上,但仅显示遮罩边界框?,python,opencv,image-processing,overlay,mask,Python,Opencv,Image Processing,Overlay,Mask,我有一个包含数百幅图像的文件夹和另一个带有相应遮罩的文件夹。图像和遮罩的名称相同,例如,image1.png的遮罩也被命名为“image1.png”。所有图像都是灰度的 我需要在循环中将遮罩覆盖到原始图像上,但只显示遮罩边界框,同时使遮罩的内表面完全透明以显示原始图像区域,如上图所示。当前代码读取包含图像和遮罩的文件夹,但我需要根据请求帮助覆盖 import pandas as pd import cv2 import numpy as np import glob import os ima
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。我已相应地更正了代码。请单独提供图像,而不是并排截屏。你还说有些东西需要彩色,但我觉得一切都是灰色的?我不明白你说的彩色面具是什么意思。你的面具是黑白的。您是否只想让遮罩的轮廓在图像上显示为您显示的黑色。如果是这样的话,一种方法是得到掩模的轮廓,然后用黑色在图像上绘制它们。我编辑了我的代码,找到轮廓,然后在原始图像上绘制它们。但现在,我只得到了最后一张图像,上面覆盖了相应的遮罩。循环缺少除最后一个图像和遮罩之外的所有图像和遮罩。遮罩是否始终为90°矩形?因为找到等高线真是太过分了。是的,它们是边界框(矩形)。我不需要颜色的边界框。图像和遮罩都是灰度图像。边界框也将以灰度显示。