这个是苹果系统无法像安卓那要简单方便长截图延伸处理的问题,需要程序自己去拼接。当然也存在两个方案一个是用户自己拼接,一个是程序拼接各有优缺点。
本来想通过opencv去拼接,但是好像难度很大,生成的图片也是类似全景图,要么就融合在一起了。因为这样的报告单照片相似度太高了,检查就是两张照片基本就融合在一起了python多张图片拼接成一张图片,后面还是通过裁剪拼接比较简单和方便。
ios拼接图片
用户利用ios app 自己处理电子报告截图,保留正常的电子报告和表头,提供实例图片
优点:前提是用户对软件和手机使用熟练度高。能独立安装苹果软件,能够很好理解操作说明。拼接合格的图片,增加图片识别成功率,需要提供文档操作说明。
缺点:增加用户操作难度,且用户对软件手机操作熟练度不一,拼接图片也存在不合格,浪费精力和api请求
程序拼接
用户上传多张电子报告图片python多张图片拼接成一张图片,由后台多图片拼接
处理方法:
a,第二张图片开始固定高度比如200像素,开始裁剪,去掉200像素高度的图片。
b,将第一张和裁剪后的图片按顺序拼接一张长图。
c,最后长图在传入识别api做其他处理
优点:用户无需更多的处理,只需要多次截图 ,多次处理。
缺点:可能会裁剪掉需要的图片数据,一般为一个项目数据。(也可能这数据不需要),缺少的数据项目用户在手动增加。安卓长图的也存在识别项目不出概率。可能存在识别重复数据(第2,3图存在重复项目),数据去重处理
拼接后图
通过测试拼接后的识别效果还是不错的。
图片裁剪代码
# 裁剪图片
import cv2
def cropImage(img,hstart,hend,widthstart,widthend):
"""
:param img: 图片路径
:param hstart: 裁剪高度开始像素
:param hend: 裁剪高度结束像素
:param widthstart: 裁剪宽度开始像素
:param widthend: 裁剪宽度结束像素
:return: 图片对象
"""
if hend == "":
hend =img.shape[0]
if widthend == "":
widthend = img.shape[1]
crop_img = img[hstart:hend, widthstart:widthend]
cv2.imshow("Resultcrop", crop_img)
cv2.waitKey(0)
return crop_img
图片拼接
def imagepinjie(image1,image2):
image_v = cv2.vconcat([image1, image2])
cv2.imshow("Result", image_v)
cv2.imwrite("F:\pingjie\r1.jpg", image_v) # 保存拼接后图片
if __name__ == '__main__':
p1 = readimg("F:\pingjie\P1.jpg")
p2 = readimg("F:\pingjie\P2.jpg")
p3 = cropImage(p2,200,"", 0,1080)
imagepinjie(p1,p3)
总结下来,这样裁剪处理还是比较简单的、方便、经济。基本这个功能实现路线基本确定可行性了。
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99