【小方法】python图片拼接(PIL模块)
使用场景:
今天超级🦅识别验证码遇到一个问题,
着张图片是由两张图片组成的,
但是超级🦅识别点选验证码,只能传入一张图片,于是需要将两张图片进行一个拼接。
当然截图也是可以的,但是截图没有原图准确。
于是今天我就开始了,疯狂百度,有很多种方法都可以实现,比如numpy数组拼接,用cv2拼接,还有使用PIL库,个人觉得使用PIL库的方法最合适了。
代码解析:
from PIL import Image
def image_Splicing(img_1, img_2, flag='y'):
img1 = Image.open(img_1)
img2 = Image.open(img_2)
size1, size2 = img1.size, img2.size
if flag == 'x':
joint = Image.new("RGB", (size1[0] + size2[0], size1[1]))
loc1, loc2 = (0, 0), (size1[0], 0)
else:
joint = Image.new("RGB", (size1[0], size2[1]+size1[1]))
loc1, loc2 = (0, 0), (0, size1[1])
joint.paste(img1, loc1)
joint.paste(img2, loc2)
joint.save('joint.png')
这里是将两张图片横向、以及纵向拼接。
- 我们先将两张图片传入函数,并用PIL的Image方法读取进来,
- 读取两张图片的size尺寸
- 根据不同的参数x或者y进行拼接
- Image.new方法可以理解为建立一张新的图纸,第一个参数“RGB”为用于新图像的模式
- 第二个参数为图纸的大小,及横向拼接则是两张图片的宽进行相加,高度不变,纵向则是高进行相加则宽不变
- 确认图片在图纸的位置
- 用paste黏贴方法将图片和对应坐标贴到图纸上。
结果展示:
横向拼接则是:
纵向拼接则是:
对于我得需求纵向拼接则是最好的结果。
来源:瓜皮三三