赞
踩
1、一个包含图片的文件夹,图片最好具有相同的命名格式,否则需要修改代码。
2、如果需要将多幅图片合成一张长图,可将代码中 M = N 的注释解除即可。
2*、如果需要按图片编号顺序,将每M张图合成1张长图,则可通过修改M实现。
【注】:图片路径不可包含中文,否则cv2.imread将无法读取。
# coding:utf-8 import numpy as np import cv2 # input: # 请把需要连接的图片放到同一个文件夹下面,图片名称最好具有相同的格式 N = 18 # 共有图片N张 M = 3 # 每M张合成一张纵向长图 # M = N # 如果仅需要合成单张图片,请解除此句的注释,令 M=N # 路径可以是绝对路径,也可以是相对路径,注意路径中不能出现中文,否则无法被imread读取 img_path = 'C:/Users/dell/Desktop/img_combine/single/' save_path = 'C:/Users/dell/Desktop/img_combine/out/' G = np.ceil(N / M) # 共分为G组 G = G.astype(np.int32) print(' image :', N, '\n', 'length :', M, '\n', 'group :', G) for j in range(0, G): imgs = [] # 把一组图像存到imgs里面 for i in range(j*M + 1, min((j+1)*M, N) + 1): # 每个文件的路径 path = img_path + '1_Page' + str(i) + '.png' mat = cv2.imread(path) imgs.append(mat) # 把imgs里面的数据按垂直方向合并 img = np.vstack(imgs) # cv2.imshow('frame', img) # 保存合成图 cv2.imwrite(save_path + 'out_' + str(j+1) + '.png', img)
参考链接:n张图像合成一个长图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。