如何在一个目录中添加(合并)多个图像

How to add (merge) multiple images in one directory

我在一个目录中有两种类型(A 和 B)的图像,我想像这样将它们添加在一起(而不是串联):

A1.jpeg + B1.jpeg = Merged1.jpeg
A2.jpeg + B2.jpeg = Merged2.jpeg
      ...
AN.jpeg + BN.jpeg = MergedN.jpeg

我不知道如何自定义我的代码以便它适用于整个目录:

import cv2
import os

for i,filenames in os.walk('.'):
    A1 = cv2.imread('A1.jpeg',0)
    B1 = cv2.imread('B1.jpeg',0)
    image = cv2.add([A1,B1])
    filename = ('Merged' + {i} + '.jpeg')
    cv2.imwrite(filename, image)

有什么想法吗?谢谢

编辑:

我在for循环中添加了计数器,因为你不能像我以前那样定义for循环。

import cv2
import os

i=0

for filenames in os.walk('.'):
    i = i + 1
    A = "A" + str(i) + ".jpeg"
    B = "B" + str(i) + ".jpeg"
    Ai = cv2.imread(A,0)
    Bi = cv2.imread(B,0)
    image = cv2.add([Ai,Bi])
    filename = ('Merged' + str(i) + '.jpeg')
    cv2.imwrite(filename, image)

但它只添加了A1和B1。这是计算for循环的错误方法吗?

你可以使用 glob 因为我认为它会更容易

import glob
for i, a_file in enumerate(glob.glob('./A*')):
    A = cv2.imread(a_file,0)
    B = cv2.imread(a_file.replace('A', 'B'),0)
    image = cv2.add([A,B])
    filename = ('Merged' + {i} + '.jpeg')
    cv2.imwrite(filename, image)

只需将 imread 中的文件名更改为您可以在 i 中使用的自定义变量。

A = "A" + str(i) + ".jpeg"
B = "B" + str(i) + ".jpeg"
Ai = cv2.imread(A,0)
Bi = cv2.imread(B,0)

我假设 i 是一个数字。

我是这样解决的:

import glob
import cv2

number_of_images = 750

for a_file in glob.glob('./A*'):
    for i in range(1,number_of_images):
        A = "A" + str(i) + ".jpeg"
        B = "B" + str(i) + ".jpeg"
        A1 = cv2.imread(A,0)
        B1 = cv2.imread(B,0)
        image = cv2.add([A1,B1])
        filename = ('Merged' + str(i) + '.jpeg')
        cv2.imwrite(filename, image)
        print(i)
    if i==number_of_images-1:
        break   

感谢您的指点!