龙空技术网

Python如何利用OCR实现检查报告单格式化输出之三图片裁剪拼接

无言独上西楼依江楼 161

前言:

现时大家对“python处理图像裁剪拼接”大体比较关怀,同学们都需要学习一些“python处理图像裁剪拼接”的相关文章。那么小编在网上搜集了一些有关“python处理图像裁剪拼接””的相关文章,希望你们能喜欢,朋友们快快来学习一下吧!

这个是苹果系统无法像安卓那要简单方便长截图延伸处理的问题,需要程序自己去拼接。当然也存在两个方案一个是用户自己拼接,一个是程序拼接各有优缺点。

本来想通过opencv去拼接,但是好像难度很大,生成的图片也是类似全景图,要么就融合在一起了。因为这样的报告单照片相似度太高了,检查就是两张照片基本就融合在一起了,后面还是通过裁剪拼接比较简单和方便。

ios拼接图片

用户利用ios app 自己处理电子报告截图,保留正常的电子报告和表头,提供实例图片

优点:前提是用户对软件和手机使用熟练度高。能独立安装苹果软件,能够很好理解操作说明。拼接合格的图片,增加图片识别成功率,需要提供文档操作说明。

缺点:增加用户操作难度,且用户对软件手机操作熟练度不一,拼接图片也存在不合格,浪费精力和api请求

程序拼接

用户上传多张电子报告图片,由后台多图片拼接

处理方法:

a,第二张图片开始固定高度比如200像素,开始裁剪,去掉200像素高度的图片。

b,将第一张和裁剪后的图片按顺序拼接一张长图。

c,最后长图在传入识别api做其他处理

优点:用户无需更多的处理,只需要多次截图 ,多次处理。

缺点:可能会裁剪掉需要的图片数据,一般为一个项目数据。(也可能这数据不需要),缺少的数据项目用户在手动增加。安卓长图的也存在识别项目不出概率。可能存在识别重复数据(第2,3图存在重复项目),数据去重处理

拼接后图

通过测试拼接后的识别效果还是不错的。

图片裁剪代码

# 裁剪图片import cv2def 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)

总结下来,这样裁剪处理还是比较简单的、方便、经济。基本这个功能实现路线基本确定可行性了。

标签: #python处理图像裁剪拼接