(附完整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的入门案例_发票识别二:字符分割...相关推荐

  1. 附完整python源码)基于tensorflow、opencv的入门案例_发票识别一:关键区域定位

    发票识别一:从一张发票照片精确定位出"发票号码"."发票代码"的数字区域 注:该代码适用于 "国税通用机打发票".尽量拍摄下正常摆放的完整发 ...

  2. Python多线程遍历爬取FTP文件(附可实现源码)

    目录 应用目标 思路分析 1.扫描网段 2.远程建立FTP连接 3.遍历读取写入文件 完整源码(可运行) 写在最后 应用目标 1.扫描网段,获取其中所有的开放FTP服务的机器的IP地址 2.依次遍历获 ...

  3. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...

    本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...

  4. C++打造植物大战僵尸辅助!附完整项目源码

    闲着没事的时候,使用C语言写的植物大战僵尸简单的外挂源码,虽然这款植物大战僵尸辅助功能简单,但绝对实用.毕竟是第一次自己开发的WG 植物大战僵尸是针对植物大战僵尸游戏中属性修改器.植物大战僵尸可以轻松 ...

  5. Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析

    文章目录 Pre 概览 开天辟地的时候初始化的处理器 @EventListener EventListenerMethodProcessor afterSingletonsInstantiated 小 ...

  6. python制作可视化图表-如何攻破可视化图表?附完整 Python 源代码

    如何攻破可视化图表?附完整 Python 源代码 翻译 | Lemon 责编 | 郭    芮 本文总结了 Matplotlib 以及 Seaborn 用的最多的50个图形.这些图表列表允许开发者使用 ...

  7. 【附源码】计算机毕业设计Python安卓电影购票app设计与实现wx4x1(源码+程序+LW+调试部署)

    [附源码]计算机毕业设计Python安卓电影购票app设计与实现wx4x1(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...

  8. c# 读cpu温度,显卡温度,硬盘温度,风扇转速,硬件信息,cpu占用,附赠项目源码

    http://download.csdn.net/download/fireghost57/9969844 OpenHardwareMonitor源码工程 读cpu温度,显卡温度,硬盘温度,风扇转速, ...

  9. 【附源码】计算机毕业设计Python安卓便利猫电影购票系统安卓app14g1h(源码+程序+LW+调试部署)

    [附源码]计算机毕业设计Python安卓便利猫电影购票系统安卓app14g1h(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyt ...

最新文章

  1. Mycat分片规则详解
  2. D - Fliptile POJ - 3279(翻转问题)
  3. c# oldb连接_C#使用 OleDbConnection 连接读取Excel
  4. AM335X can驱动移植
  5. linux libpcap 效率,Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包
  6. 阿里大数据分析与应用(part6)--数据大屏DataV
  7. java赋值语句_java并发编程之原子性问题
  8. python 实现 CRC 冗余码的方法
  9. 班扎古鲁白玛的沉默(见与不见)
  10. Oracle查询指定表里的触发器
  11. jsp,jstl checkbox 回显方法
  12. Android 开发者不得不面对的六个问题
  13. java之uml类图的介绍
  14. flash花屏 html,电脑中Firefox火狐浏览器出现卡顿、花屏、Flash崩溃等问题的解决方法...
  15. C语言99乘法表,求指点
  16. 2021SC@SDUSC Zxing开源代码(十二)Aztec二维码(一)
  17. 【makefile】wildcard函数
  18. 如何在Java中使用Lambda表达式
  19. Windows与Linux双系统设置默认引导项与删除引导项
  20. 【Eclipse AST】AST与ASTView简介

热门文章

  1. IC设计环境——cadence IC51内置smic130nmpdk
  2. 以太坊(EVM) 链下签名 链上验证 - 实践
  3. Calibre fails to export schematic netlist
  4. C# 文字输入语音播放,代码如下
  5. 学软件测试需要培训吗?
  6. 在计算机中音乐被数字化了,数字化音乐 - 王朝网络 - tc.wangchao.net.cn
  7. Docker环境下Spring Boot应用内存飙升分析与解决
  8. uncertain temporal knowledge graph论文解读
  9. 32. Longest Valid Parenthese
  10. html字体阴影设置,css怎么给字体加阴影?