python实现图片拼接长图_用Python实现长截图拼接

可能很多安卓手机都会自带拼接长截图的功能,可是对于iOS只能通过第三方的app拼接了。于是我想将拼接的功能做成微信小程序,这样会比较方便,无奈实现过程中发现用JavaScript实现性能存在很大问题,识别率也很低,于是打算先用python实现,以测试算法的正确性。

拼接效果在最后

我写得可能不是很好,欢迎指正!

要实现长截图,可能的情况很多,先介绍一下最简单的情况

长截图算法

获取截图

我们按照手工拼接的想法来考虑这个问题

首先得到两张截图

8b1719a846ecd0751249f3c04c6e16fa.png

寻找相同部分

然后我们首先要考虑两张图相同的部分,也就是找到相同的头部

021e8d4abbc2561e9ce30c0057ce9639.png

删除相同头部

接着把第二张图中与图1重复的头部删掉

b6a1286e72480da6944bc2268efc7fe6.png

移动并拼接

然后第二张图从底至顶移动,找到重合的地方,拼接

82cb0f123550ecd911bab51a905363d2.png

这就是我们正常的手工拼接流程。因此可以把算法总结一下:

step 1: 获取两张截图

step 2: 寻找相同的头部

step 3: 删除第二张中相同的头部

step 4: 从第一张的底部至顶部比较,找到重合的地方,拼接

实现前要知道

通常的图片为RGB模式,即图片的每个像素由红(red)、绿(green)、蓝(blue)三个颜色组成,它们的取值范围是[0,255],即(0,0,0)表示黑色,(255,255,255)表示白色。

在处理图片时,我们可以对图片中的每个像素操作,获取到图片的每个像素的RGB值,对于一张2*3的纯白图片,我们可以得到它的像素内容:

[

[ (255,255,255) , (255,255,255) ],

[ (255,255,255) , (255,255,255) ],

[ (255,255,255) , (255,255,255) ]

]

共6个像素点,每个tuple包含了一个像素点的RGB内容<

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值