【问题标题】:Merging images from different folders and storing to a different folder合并来自不同文件夹的图像并存储到不同的文件夹
【发布时间】:2020-06-30 00:21:07
【问题描述】:

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

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)

【问题讨论】:

  • 您有什么具体问题吗?请参阅How to Askhelp center
  • 与其将每张图像加载为 3 通道 BGR 数据然后制作第 4 通道灰度数据,您可以使用 1/4 的 RAM 并使用适当的标志直接将每张图像加载为灰度cv2.imread()。你的代码也会更短。

标签: python opencv merge image-preprocessing


【解决方案1】:

您的问题不完整。我假设您对 for 循环有疑问。 你可以用这个替换嵌套的 for 循环:

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

【讨论】:

  • 谢谢。有效。我还修改了最后的 write 语句以防止图像覆盖。
猜你喜欢
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
相关资源
最近更新 更多