将4个图像按名称(多个图像中的4个范围)连接起来并按折叠方式存储

2024-06-28 20:06:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有四个大小为112*112的图像,我想将它们连接成一个图像,即224*224。我尝试使用连接函数,但有多个图像,我只需要从它们的一批4个图像

下面的代码包含四个图像“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\u 01 02\u 02


Tags: 图像importnpcv2visjpgimg1img2
1条回答
网友
1楼 · 发布于 2024-06-28 20:06:20

可以使用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)

相关问题 更多 >