热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonopencv数字识别_opencv+python机读卡识别(四)百度API进行数字识别

1.对数字图像部分进行处理预处理部分同样需要,步骤与选择题模块相似,但目的不同,文字部分主要将数字变粗,便于识别。其实也就

1.对数字图像部分进行处理

预处理部分同样需要,步骤与选择题模块相似,但目的不同,文字部分主要将数字变粗,便于识别。其实也就是和选择题模块相比变了几个参数

NumImg=cv2.blur(thresh,(15,15))

NumImg=cv2.threshold(NumImg, 170, 255, cv2.THRESH_BINARY)[1]

09183909_LhTR.png

2.调用百度ocr api

试过多种检测方式,还是用别人家现成的好http://apistore.baidu.com/

百度api使用方法:

首先需要注册一个百度云账号,这样在个人中心里就会看到apikey。这个就是和百度进行交流的钥匙。然后找到百度ocr的入口找到接口地址。虽然这里给出了但还是可以看下文档,里面有些细节,比如图片想免费就要300k以内。上面给的python示例代码是py2的,这里给出py3的方式(http://apis.baidu.com/idl_baidu/baiduocrpay/idlocrpaid)

import sys, urllib, json

import urllib.request

import urllib.parse

import base64

url = 'http://apis.baidu.com/idl_baidu/ocridcard/ocridcard'

data = {}

data['fromdevice'] = "pc"

data['clientip'] = "10.10.10.0"

data['detecttype'] = "LocateRecognize"

data['languagetype'] = "ENG"#英文模式

data['imagetype'] = "1"

#图片在本地

file_object = open('T.png','rb')

try:

img = file_object.read( )

finally:

file_object.close( )

data['image'] =base64.b64encode(img)

decoded_data = urllib.parse.urlencode(data)

decoded_data = decoded_data.encode('utf-8')

req = urllib.request.Request(url,decoded_data)

req.add_header("Content-Type", "application/x-www-form-urlencoded")

req.add_header("apikey", "这里填入个人中心的apikey")

resp = urllib.request.urlopen(req)

content = resp.read()

if(content):

content = json.loads(content.decode())

print(content)

3.切割图片

根据具体情况需要切割图片才能让百度api识别,具体限制因素还是图片大小,切割方式,这里只给出示例

#切割具体位置[起始y:终止y,起始x:终止y]

tempimg1=img[240:461,213:939]

#图片切割,width,height分别填入目标宽高

tempimg1 = cv2.resize(tempimg1, (width, height), cv2.INTER_LANCZOS4)

#图片保存,png,jpg格式均可

cv2.imwrite("T.png", tempimg1)

之后调用,若识别为英文需要转化,比如可能将0识别为D,这时转换即可,如:

def temp(char):

if(char=='D'):

return '0'

效果如图展示

09192803_Z7Kr.png

当然若是能想办法去掉答题卡外围边框效果应该会更好……



推荐阅读
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
author-avatar
fspygh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有