使用场景:

今天超级🦅识别验证码遇到一个问题,
在这里插入图片描述

着张图片是由两张图片组成的,
在这里插入图片描述
但是超级🦅识别点选验证码,只能传入一张图片,于是需要将两张图片进行一个拼接。
当然截图也是可以的,但是截图没有原图准确。

于是今天我就开始了,疯狂百度,有很多种方法都可以实现,比如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')

这里是将两张图片横向、以及纵向拼接。

  1. 我们先将两张图片传入函数,并用PIL的Image方法读取进来,
  2. 读取两张图片的size尺寸
  3. 根据不同的参数x或者y进行拼接
  4. Image.new方法可以理解为建立一张新的图纸,第一个参数“RGB”为用于新图像的模式
  5. 第二个参数为图纸的大小,及横向拼接则是两张图片的宽进行相加,高度不变,纵向则是高进行相加则宽不变
  6. 确认图片在图纸的位置
  7. 用paste黏贴方法将图片和对应坐标贴到图纸上。

结果展示:

横向拼接则是:
在这里插入图片描述

纵向拼接则是:
在这里插入图片描述
对于我得需求纵向拼接则是最好的结果。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐