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張圖像合成一個長圖

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