【发布时间】:2021-03-06 22:11:00
【问题描述】:
我有一个包含多个图像的文件夹,可以说图像名称是----
AB_1.jpg, AB_2.jpg, AB_3.jpg, AB_4.jpg, AB_5.jpg, AB_6.jpg, AB_7.jpg, AB_8.jpg, BC_1.jpg, BC_2.jpg, BC_3.jpg, CA_1.jpg, CA_2.jpg
这里我的目标是将所有图像连接到 _5 或小于 _5 作为一个图像....
所以基本上我要说的是—— AB_1.jpg, AB_2.jpg, AB_3.jpg, AB_4.jpg, AB_5.jpg
将垂直连接,文件名可以说是 AB_Concat.jpg
_6,_7,_8 被跳过,因为我们只想将图像连接到 _5 为一个....
同样,, BC_1.jpg, BC_2.jpg, BC_3.jpg
将垂直连接,文件名可以说是 BC_Concat.jpg,如您在此处看到的,BC_3 是最后一个小于 _5 的文件,因此所有文件都将垂直连接.....
所以如果有人对如何实现相同的想法有任何想法,请帮助......
这个问题与连接两个图像的一次不相似,因为这里我们是根据图像中下划线后的值来连接图像....
这是我尝试过的东西---
import cv2
import shutil
import numpy as np
import os
from PIL import Image
path = r"D:\split"
out = r"D:\concat_test"
os.makedirs(out,exist_ok=True)
imag_name =[]
imag_name1 = []
for img in os.listdir(path):
folder = img.rsplit("_",1)[0]
imag_name1.append((folder,img))
images = cv2.imread(os.path.join(path,img),0)
imag_name.append((folder,images))
# to create a folder for multiple images contain same name
for image,name in zip(imag_name,imag_name1):
if image[0] == name[0]:
folder_n = os.path.join(out,name[0])
final_fldr = os.path.join(folder_n,name[1])
os.makedirs(folder_n,exist_ok=True)
cv2.imwrite(final_fldr,image[1])
# to concatinate the images
for root,dirs,files in os.walk(out):
np_images = [cv2.imread(os.path.join(root,file),0) for file in files]
np_name = list(set([file.rsplit("_",1)[0] for file in files]))
if len(np_images) != 0:
print(np_name)
concat = cv2.vconcat(np_images)
concatinated_images = os.path.join(out,"concatinated_images")
os.makedirs(concatinated_images,exist_ok=True)
cv2.imwrite(os.path.join(concatinated_images,*np_name)+".tif",concat)
#to remove the unwanted folder
for remove_folder in os.listdir(out):
if remove_folder != "concatinated_images":
folders_to_remove = os.path.join(out,remove_folder)
shutil.rmtree(folders_to_remove)
'''
【问题讨论】:
-
这能回答你的问题吗? Combining Two Images with OpenCV
-
@InyoungKim 不,上面的解决方案对我没有用,因为它绑定了 2 个图像......因为我在一个目录中有多个图像,所以我想将所有图像与一些文件名结合起来,直到 _5作为一个连接的单个图像,其他图像也类似......
-
这些答案是否有助于解决您的复杂用例?如果是这样,请accept one of the answers。如果没有,请具体跟进,以便解决任何未解决的问题。谢谢
标签: python opencv image-processing concatenation python-imaging-library