Python 合并来自不同文件夹的图像并存储到不同文件夹

Python 合并来自不同文件夹的图像并存储到不同文件夹,python,opencv,merge,image-preprocessing,Python,Opencv,Merge,Image Preprocessing,我有三个不同的文件夹m1、m2和m3。“m1”文件夹包含格式图像(i)_m1.png的图像(其中i=1到N),“m2”文件夹包含格式图像(i)_m2.png的图像,“m3”文件夹包含格式图像(i)_m3.png的图像。我想用cv2.merge这样合并这些图像:(cv2.merge((image1_m1,image1_m2,image1_m3))并持续N次,存储在不同的文件夹中,而不是包含格式为image(I)_merged.png的“N”个合并图像 import pandas as pd imp

我有三个不同的文件夹m1、m2和m3。“m1”文件夹包含格式图像(i)_m1.png的图像(其中i=1到N),“m2”文件夹包含格式图像(i)_m2.png的图像,“m3”文件夹包含格式图像(i)_m3.png的图像。我想用cv2.merge这样合并这些图像:(cv2.merge((image1_m1,image1_m2,image1_m3))并持续N次,存储在不同的文件夹中,而不是包含格式为image(I)_merged.png的“N”个合并图像

import pandas as pd
import cv2
import numpy as np
import glob
import os

filenames1 = glob.glob("data_folder/m1/*.png")
filenames1.sort()
filenames2 = glob.glob("data_folder/m2/*.png")
filenames2.sort()
filenames3 = glob.glob("data_folder/m3/*.png")
filenames3.sort()


for f1 in filenames1:
    for f2 in filenames2:
        for f3 in filenames3:
            img1 = cv2.imread(f1)
            img2 = cv2.imread(f2)
            img3 = cv2.imread(f3)
            img_m1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
            img_m2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
            img_m3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)
            img_rgb = cv2.merge((img_m1, img_m2, img_m3))
            cv2.imwrite("data_folder/merge/img_name.png", img_rgb)

你的问题不完整。我想你对for循环有问题。 您可以将嵌套for循环替换为以下内容:

for f1,f2,f3 in zip(filenames1,filenames2,filenames3):

您是否有特定的问题?请参见,。您可以使用1/4的RAM,直接将每个图像作为灰度加载,并使用相应的标志将其加载到
cv2.imread()中,而不是将每个图像作为3个通道的BGR数据加载,然后生成第4个通道的灰度数据
。您的代码也会更短。谢谢。它成功了。我还修改了最后的write语句以防止图像覆盖。