python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...
(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割
发布时间:2018-05-14 20:16,
浏览次数:1201
, 标签:
python
tensorflow
opencv
发票识别二
1.imread读入“发票代码区域”或者“发票号码码区域”;
2.调整高度,直方图均衡化,形态学,阈值分割。颜色反转:文字置为白色,背景置为黑色;
3.获取目标区域的最小外接矩形。消除被包围的轮廓,消除不合理尺寸的矩形;
4.为了便于后期输入到cnn网络,将图像设置为28×28,不拉伸,全0填充(仿射变换—平移缩放),保存并排序;
5.通过SVM判断矩形框内的图片是否数字,按从左到右顺序保存序列数字。
6.分割完毕,使用一个简单cnn模型逐个识别即可。(见发票识别三)
#encoding:utf-8 import cv2 import numpy as np import util_funs
#将img的高度调整为28,先后对图像进行如下操作:直方图均衡化,形态学,阈值分割 def pre_treat(img): height_ = 28
ratio_ = float(img.shape[1])/float(img.shape[0]) gray = cv2.cvtColor(img,
cv2.COLOR_BGR2GRAY) gray = cv2.resize(gray,(int(ratio_*height_),height_)) gray
= cv2.equalizeHist(gray) _, binary = cv2.threshold(gray, 50, 255,
cv2.THRESH_BINARY) img_ = 255 - binary #反转:文字置为白色,背景置为黑色 return img_
#删掉不合理尺寸的矩形 def get_roi(contours): rect_list = [] for i in
range(len(contours)): rect = cv2.boundingRect(contours[i]) if rect2[3] > 10:
rect_list.append(rect2) return rect_list #获取目标区域的最小外接矩形 def get_rect(img):
_,contours,hierarchy = cv2.findContours(img_, cv2.RETR_TREE,
cv2.CHAIN_APPROX_SIMPLE) rect_list = get_roi(contours) #消除内部轮廓,比如“0”内外各有1个轮廓
del_rect = delete_(rect_list) return del_rect.solve()
#将图像设置为28×28,不拉伸,全0填充(仿射变换——平移缩放) def change_(img): length = 28 h,w = img.shape
H = np.float32([[1,0,(length-w)/2],[0,1,(length-h)/2]]) img =
cv2.warpAffine(img,H,(length,length)) M =
cv2.getRotationMatrix2D((length/2,length/2),0,26/float(img.shape[0])) return
cv2.warpAffine(img,M,(length,length)) def get_img_list(rect_list):
#保存所有初轮筛选出的图片于img_list中 img_list = [] for rect in rect_list: w1,w2 =
rect2[0],rect2[0]+rect2[2] h1,h2 = rect2[1],rect2[1]+rect2[3]
img_list.append(change_(img.copy()[h1:h2,w1:w2])) return img_list def
get_num_by_SVM(img_list): #通过SVM判断矩形框内的图片是否文数字 #加载已经训练好的m文件。(训练过程在下面) svm_judge
= joblib.load("train_model.m") num_list = [] for img in img_list: if
svm_judge.predict(img) == 1: num_list.append(img) return num_list def
seg_num(img): img = pre_treat(img) rect_list = get_rect(img_)
#从左到右边排序。"util_funs.py"见发票识别一 rect_list = util_funs.sort_region(region,flag =
0) #保存所有初轮筛选出的图片于img_list中 img_list = get_img_list(rect_list) img_num =
get_num_by_SVM(img_list) if __name__ == "__main__": img =
cv2.imread("发票代码.jpg") img_num = seg_num(img)
python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...相关推荐
- 附完整python源码)基于tensorflow、opencv的入门案例_发票识别一:关键区域定位
发票识别一:从一张发票照片精确定位出"发票号码"."发票代码"的数字区域 注:该代码适用于 "国税通用机打发票".尽量拍摄下正常摆放的完整发 ...
- Python多线程遍历爬取FTP文件(附可实现源码)
目录 应用目标 思路分析 1.扫描网段 2.远程建立FTP连接 3.遍历读取写入文件 完整源码(可运行) 写在最后 应用目标 1.扫描网段,获取其中所有的开放FTP服务的机器的IP地址 2.依次遍历获 ...
- android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...
本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...
- C++打造植物大战僵尸辅助!附完整项目源码
闲着没事的时候,使用C语言写的植物大战僵尸简单的外挂源码,虽然这款植物大战僵尸辅助功能简单,但绝对实用.毕竟是第一次自己开发的WG 植物大战僵尸是针对植物大战僵尸游戏中属性修改器.植物大战僵尸可以轻松 ...
- Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析
文章目录 Pre 概览 开天辟地的时候初始化的处理器 @EventListener EventListenerMethodProcessor afterSingletonsInstantiated 小 ...
- python制作可视化图表-如何攻破可视化图表?附完整 Python 源代码
如何攻破可视化图表?附完整 Python 源代码 翻译 | Lemon 责编 | 郭 芮 本文总结了 Matplotlib 以及 Seaborn 用的最多的50个图形.这些图表列表允许开发者使用 ...
- 【附源码】计算机毕业设计Python安卓电影购票app设计与实现wx4x1(源码+程序+LW+调试部署)
[附源码]计算机毕业设计Python安卓电影购票app设计与实现wx4x1(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...
- c# 读cpu温度,显卡温度,硬盘温度,风扇转速,硬件信息,cpu占用,附赠项目源码
http://download.csdn.net/download/fireghost57/9969844 OpenHardwareMonitor源码工程 读cpu温度,显卡温度,硬盘温度,风扇转速, ...
- 【附源码】计算机毕业设计Python安卓便利猫电影购票系统安卓app14g1h(源码+程序+LW+调试部署)
[附源码]计算机毕业设计Python安卓便利猫电影购票系统安卓app14g1h(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyt ...
最新文章
- Mycat分片规则详解
- D - Fliptile POJ - 3279(翻转问题)
- c# oldb连接_C#使用 OleDbConnection 连接读取Excel
- AM335X can驱动移植
- linux libpcap 效率,Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包
- 阿里大数据分析与应用(part6)--数据大屏DataV
- java赋值语句_java并发编程之原子性问题
- python 实现 CRC 冗余码的方法
- 班扎古鲁白玛的沉默(见与不见)
- Oracle查询指定表里的触发器
- jsp,jstl checkbox 回显方法
- Android 开发者不得不面对的六个问题
- java之uml类图的介绍
- flash花屏 html,电脑中Firefox火狐浏览器出现卡顿、花屏、Flash崩溃等问题的解决方法...
- C语言99乘法表,求指点
- 2021SC@SDUSC Zxing开源代码(十二)Aztec二维码(一)
- 【makefile】wildcard函数
- 如何在Java中使用Lambda表达式
- Windows与Linux双系统设置默认引导项与删除引导项
- 【Eclipse AST】AST与ASTView简介
热门文章
- IC设计环境——cadence IC51内置smic130nmpdk
- 以太坊(EVM) 链下签名 链上验证 - 实践
- Calibre fails to export schematic netlist
- C# 文字输入语音播放,代码如下
- 学软件测试需要培训吗?
- 在计算机中音乐被数字化了,数字化音乐 - 王朝网络 - tc.wangchao.net.cn
- Docker环境下Spring Boot应用内存飙升分析与解决
- uncertain temporal knowledge graph论文解读
- 32. Longest Valid Parenthese
- html字体阴影设置,css怎么给字体加阴影?