根据名称连接4张图像(在多张图像中4张范围内)并将它们存储在文件夹中

时间:2019-06-12 04:20:04

标签: python computer-vision

我有四个大小为112 * 112的图像,我想将它们连接为1个图像,即224 * 224.i我尝试使用连接功能,但是有多个图像,从中我只需要一批4张图像。 / p>

下面是包含四个图像“ 0607270001-1” ... 01_01、01_02、02_01、02_02的代码,并将它们串联为一个图像0607270001-1。但是我在一个文件夹中大约有500张图像,我想根据名称将它们分为四个。

import cv2
import numpy as np
img1 = cv2.imread('0607270001-1_01_01.jpg')
img2 = cv2.imread('0607270001-1_01_02.jpg')
vis1 = np.concatenate((img1, img2), axis=1)
img3 = cv2.imread('0607270001-1_02_01.jpg')
img4 = cv2.imread('0607270001-1_02_02.jpg')
vis2 = np.concatenate((img3, img4), axis=1)
vis = np.concatenate((vis1, vis2), axis=0)
cv2.imwrite('0607270001-1.jpg', vis)

图像应按以下顺序连接: 01_01 01_02 02_01 02_02

1 个答案:

答案 0 :(得分:0)

您可以使用glob遍历目录中的文件。您的代码如下所示:

import numpy as np 
import glob
import cv2

for img in glob.glob("*_01_01.jpg"):            # Iterate through all images ending with _01_01.jpg
    name = img.split('_')[0]                    # Extract the common part of group. Eg: 0607270001-1
    img1 = cv2.imread(name+'_01_01.jpg')    
    img2 = cv2.imread(name+'_01_02.jpg')
    vis1 = np.concatenate((img1, img2), axis=1)
    img3 = cv2.imread(name+'_02_01.jpg')
    img4 = cv2.imread(name+'_02_02.jpg')
    vis2 = np.concatenate((img3, img4), axis=1)
    vis = np.concatenate((vis1, vis2), axis=0)
    cv2.imwrite(name+'.jpg', vis)