利用python实现图片的横向和纵向拼接,实现起来主要有Pillow或OpenCV两个方法。两个代码略有不同,实现起来也还算简单。主要知识点是:
Pillow实现:主要采用crop,实现图片截取、采用paste,实现图片拼接。
OpenCV实现:截取直接[],截取需要的区域,采用np.vstack, np.hstack实现纵向,横向拼接。或者np.concatenate实现,通过axis来控制横向纵向。
实现代码如下:
import cv2
import numpy as np
from PIL import Image
# 程序目标,将example1 example2 分别截取上下部分,然后合成一张图
def crop_Pil():
img1 = Image.open("example1.jpg")
img2 = Image.open("example2.jpg")
print("example1 size", img1.size, " example2 size", img2.size)
img1 = img1.resize((1080, int(img1.size[1] * 1080 / img1.size[0])), Image.BILINEAR)
img2 = img2.resize((1080, int(img2.size[1] * 1080 / img2.size[0])), Image.BILINEAR)
joint = Image.new('RGB', (1080, 1920))
tmp1 = img1.crop( (0, 0, 1080, 960))
tmp2 = img2.crop((0, 0, 1080, 960))
joint.paste(tmp1, (0, 0)) # 纵向拼接
joint.paste(tmp2, (0, 960)) # 横向拼接
joint.save("output1.jpg")
joint = Image.new('RGB', (2160, 960))
j