Python 使用numpy和cv2——多图纵向拼接合成长图

环境:python、numpy、opencv。

输入:

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张图像合成一个长图

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章