Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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和Opencv从不同文件夹读取多个图像_Python_Opencv_Image Processing - Fatal编程技术网

如何使用python和Opencv从不同文件夹读取多个图像

如何使用python和Opencv从不同文件夹读取多个图像,python,opencv,image-processing,Python,Opencv,Image Processing,我试图从3个不同的文件夹中读取多个图像。每个文件夹包含100个图像。我尝试了两种不同的代码,但我不知道为什么这些代码不起作用。有人能帮忙吗?谢谢 例如: 裁剪矩阵:Matrix1.png,Matrix2.png 裁剪标记:Mark1.png,Mark2.png 裁剪的标记1:Mark1Q1.png、Mark1Q2.png 输出:Matrix1.png+Mark1.png+Mark1Q1.png 代码1: #1st path1 = os.path.abspath("C:/Users/TS

我试图从3个不同的文件夹中读取多个图像。每个文件夹包含100个图像。我尝试了两种不同的代码,但我不知道为什么这些代码不起作用。有人能帮忙吗?谢谢

例如:

裁剪矩阵:Matrix1.png,Matrix2.png

裁剪标记:Mark1.png,Mark2.png

裁剪的标记1:Mark1Q1.png、Mark1Q2.png

输出:Matrix1.png+Mark1.png+Mark1Q1.png

代码1:

#1st
path1 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Matrix/*.png")
path2 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Marks/*.png")
path3 = os.path.abspath("C:/Users/TSL/Desktop/Crop/Cropped Marks1/*.png")
folder= os.path.join(path1, path2, path3)

def load(folder):
   images = []

   for filename in os.listdir(folder):
      if filename.endswith(".png"):
         img = cv2.imread(os.path.join(folder, filename))
         if img is not None:
            images.append(img)
   return images

root = 'C:/Users/TSL/Desktop/Crop'
folders = [os.path.join(root, x) for x in ('Cropped Matrix', 'Cropped Marks', 'Cropped Marks1')]
all = [img for folder in folders for img in load(folder)]

cv2.imshow("Join img", all)
cv2.waitKey(0)
代码2

#2nd
path1 = os.path.abspath('Cropped Matrix')
path2 = os.path.abspath('Cropped Marks')
path3 = os.path.abspath('Cropped Marks1')
folder= os.path.join(path1, path2, path3)

def load(folder):

    images = []

    for filename in os.listdir(folder):
        if any([filename.endswith(x) for x in [".png"]]):
            img = cv2.imread(os.path.join(folder, filename))
            if img is not None:
                images.append(img)
    return images

folders = ['Cropped Matrix', 'Cropped Marks',]

for folder in folders:
    images = load(folder)
    read = cv2.imread(images)

    cv2.imshow("Join images", read)
    cv2.waitKey(0)

all
是一个图像列表,您可以尝试使用
imshow
来显示它。要逐个显示所有图像,您可以循环浏览
all
,并使用
imshow
显示每个图像

另外,正如@gold_cy正确指出的那样,
all
是一个内置的python函数,因此应该避免将其用作变量名。将其更改为类似于
all_images

all_images=[img for folders in folders for img in load(folder)]
对于所有图片中的i:
cv2.imshow(“图像”,i)#或您想要的任何方式
cv2.等待键(10)或任何合适的号码

all
重命名为其他名称,您正在覆盖内置函数
all
@gold\cy非常好的一点答案是工作感谢您的帮助@Sid和gold\cy