可能很多安卓手机都会自带拼接长截图的功能,可是对于iOS只能通过第三方的app拼接了。于是我想将拼接的功能做成微信小程序,这样会比较方便,无奈实现过程中发现用JavaScript实现性能存在很大问题,识别率也很低,于是打算先用python实现,以测试算法的正确性。
拼接效果在最后
我写得可能不是很好,欢迎指正!
要实现长截图,可能的情况很多,先介绍一下最简单的情况
长截图算法
获取截图
我们按照手工拼接的想法来考虑这个问题
首先得到两张截图
寻找相同部分
然后我们首先要考虑两张图相同的部分,也就是找到相同的头部
删除相同头部
接着把第二张图中与图1重复的头部删掉
移动并拼接
然后第二张图从底至顶移动,找到重合的地方,拼接
这就是我们正常的手工拼接流程。因此可以把算法总结一下:
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内容<