Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将图像遮罩覆盖到原始图像上,但仅显示遮罩边界框?_Python_Opencv_Image Processing_Overlay_Mask - Fatal编程技术网

Python 如何将图像遮罩覆盖到原始图像上,但仅显示遮罩边界框?

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

我有一个包含数百幅图像的文件夹和另一个带有相应遮罩的文件夹。图像和遮罩的名称相同,例如,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。我已相应地更正了代码。

请单独提供图像,而不是并排截屏。你还说有些东西需要彩色,但我觉得一切都是灰色的?我不明白你说的彩色面具是什么意思。你的面具是黑白的。您是否只想让遮罩的轮廓在图像上显示为您显示的黑色。如果是这样的话,一种方法是得到掩模的轮廓,然后用黑色在图像上绘制它们。我编辑了我的代码,找到轮廓,然后在原始图像上绘制它们。但现在,我只得到了最后一张图像,上面覆盖了相应的遮罩。循环缺少除最后一个图像和遮罩之外的所有图像和遮罩。遮罩是否始终为90°矩形?因为找到等高线真是太过分了。是的,它们是边界框(矩形)。我不需要颜色的边界框。图像和遮罩都是灰度图像。边界框也将以灰度显示。