当前位置:   article > 正文

Python 使用numpy和cv2——多图纵向拼接合成长图_cv2可以处理最长的图像

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

参考链接:n张图像合成一个长图

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号