智能小车识别图像中的文字

运行平台

这次的内容是基于Xilinx公司的Zybo开发板以及其配套的Zrobot套件开发

Zybo上面的sd卡搭载了Ubuntu12.04LTS的linux版本,预装配置了opencv2.4.9和python2.7.3。

开发内容

注意:以下内容均是两个人在一天之内完成的,略有不足。后续会有修改版。特别声明队友为tt_leader大大。

java串流stream到网页

由于网页端java的安全机制问题,想要从网页端读取到摄像头的实时内容,需要安装一个java插件,并设置java的安全权限为低(具体搜索显示信息即可得到答案)。这里推荐使用ie浏览器(别打···没写错 是ie···

安卓app小车控制器

由于开发时间的局限,因此选择了安卓读取浏览器内容的方式,同时修改样式使其具备控制器的功能。

控制端实现的方式是cgi的action方式。

源代码在最后会有超链接。

python配置

开发板中的python所需的库是没配置的,因此需要为其配置所需的库。并且,开发板不支持pip和easy_install命令。

由于开发板的系统是嵌入式系统,只能通过命令行的方式进行交互,因此使用SCP协议传输文件。

Windows下可以使用Winscp软件传文件,linux下使用scp命令传文件。

需要对开发板上的系统设置root用户密码。

另外也需要一台ubuntu机器安装python2.7,并能跑通程序。所需的库为requests、urllib2、json。

OCR光学字符识别

python程序如下:

import requests,json
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
print sys.getdefaultencoding() print('\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n')
print('OCR running')
print('-------- -------------------')
print('The programme is to identify the text in the picture')
print('Let us appreciate it')
print('\n\n\n\n\n\n') header = {
'Content-type': 'application/json'
} op1 = {
'subscription-key': 'your_subscription_key',
'language':'unk',
'detectOrientation':'true'
} op2 = {
#'Url': 'http://ww2.sinaimg.cn/bmiddle/6a6a6ffdjw1evhnx9hb3ij20hs0np40m.jpg'
#'Url': 'http://ww3.sinaimg.cn/bmiddle/6a6a6ffdjw1evhlb459dfj20hs0npdha.jpg'
'Url': 'http://ww4.sinaimg.cn/bmiddle/6a6a6ffdjw1evi6s14no4j20hs0npq43.jpg'
} r = requests.get('http://api.projectoxford.ai/vision/v1/ocr',params=op1, timeout=15)
myUrl = r.url
r = requests.post(myUrl,data=json.dumps(op2),headers=header, timeout=15)
j = r.json()
for x in j['regions']:
lines = x['lines']
for y in lines:
words = y['words']
for z in words:
#g = z['text']
print z['text'],
#print z['text'].decode('ascii').encode('utf-8'),
#print json.dumps(z['text'], encoding='UTF-8', ensure_ascii=False),
#print z['text'].encoding
#print unicode(z['text'], encoding='utf-8'),
print('\n')

在程序中,不能实时从摄像头读取内容识别。只能分两步完成,先拍摄图片在云端存储,然后对图像进行文字识别。图像识别方面使用的是微乳的图像库api,需要申请订阅,程序中的your_subscription_key需要修改为自己的订阅。

另外,中文字符输出在嵌入式ubuntu编码中产生问题,桌面版ubuntu无这个问题。程序中试图修复也花了很久的时间,最终无果,留待后期改进。

具体原因是ASCII码不支持中文但嵌入式ubuntu的python编码修改utf8码没有效果。

后期改进

python程序修改后如下:

import requests,json,base64
import cv2 print('OCR...') header = {
'Content-type': 'application/octet-stream'
} op1 = {
'subscription-key': 'your_subscription_key',
'language':'unk',
'detectOrientation':'true'
} capture = cv2.VideoCapture(0)
frame = capture.read()
Assert frame is not None
cv2.imwrite('/home/xxx/screenshot.jpg', frame) myData = open('./screenshot.jpg','rb').read() r = requests.get('https://api.projectoxford.ai/vision/v1/ocr',params=op1, timeout=15)
myUrl = r.url
r = requests.post(myUrl,data=myData,headers=header, timeout=15)
j = r.json()
for x in j['regions']:
lines = x['lines']
for y in lines:
words = y['words']
for z in words:
print(z['text'],end="")
print('\n')

另,升级开发板的python2.7为python3即可解决编码问题。

需要手动打开开发板的摄像头。开发板默认配置好opencv2.4.9。

存储路径根据自己情况修改。

由于是后期改进,没有办法在Zybo板子上测试,但在其他平台上面测试通过。

传送门

安卓工程下载

课程后记

我个人接受不了有人一边过来示好一边在展示的时候故意刁难,我可真没办法信守与这种人的承诺。

Zybo智能小车识别图像中的文字的更多相关文章

  1. 利用百度文字识别API识别图像中的文字

      本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

  2. Android调用OCR识别图像中的文字

    // CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...

  3. 使用 Python 识别并提取图像中的文字

    1. 介绍 介绍使用 python 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情. 2. 必备工具 tesseract-ocr 下载地址: https://github. ...

  4. 利用Hough变换识别图像中的直线

    引入 近期看到2015年数学建模A题太阳影子定位中的第四问,需要根据附件中视频里的直杆的太阳影子的变化确定拍摄地点.其实确定拍摄地点这个问题并不是十分困难,因为有前三问的铺垫,我们已经得出了太阳影子长 ...

  5. KNN识别图像上的数字及python实现

    领导让我每天手工录入BI系统中的数据并判断数据是否存在异常,若有异常点,则检测是系统问题还是业务问题.为了解放双手,我决定写个程序完成每天录入管理驾驶舱数据的任务.首先用按键精灵录了一套脚本把系统中的 ...

  6. 从图像中检测和识别表格,北航&微软提出新型数据集 TableBank

    纯学术 的识别表格的文章: http://hrb-br.com/5007404/20190321A0B99Y00.html https://github.com/doc-analysis/TableB ...

  7. OpenCV_contrib里的Text(自然场景图像中的文本检测与识别)

    平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake 待解决!!!Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景 ...

  8. 使用TensorFlow进行训练识别视频图像中物体

    本教程针对Windows10实现谷歌公布的TensorFlow Object Detection API视频物体识别系统,其他平台也可借鉴. 本教程将网络上相关资料筛选整合(文末附上参考资料链接),旨 ...

  9. 树莓派-4WD智能小车操作小结

    树莓派-4WD智能小车操作小结 树莓派4B-4WD智能小车,双层结构,第一层结构为:小车扩展板(底层)+树莓派主板,通过铜柱隔离固定,小车扩展板相当于计算机的外设扩展板:上面一层为第二层,是三个舵机承 ...

随机推荐

  1. SecondaryNamenode配置与NameNode故障恢复

    一.配置 1. 在masters文件中添加 Secondary节点的主机名. *注:masters文件用于指定secondary的主机而不是namenode,slaves用于指定datanode和ta ...

  2. leetcode 19

    最开始用一般的方法,首先遍历链表求出长度,进而求出需要删除节点的位置,最后进行节点的删除. 代码如下: /** * Definition for singly-linked list. * struc ...

  3. C puzzles详解【9-12题】

    第九题 #include <stdio.h> int main() { float f=0.0f; int i; ;i<;i++) f = f + 0.1f; if(f == 1.0 ...

  4. Dockpanel的控件加载问题

    1. 正确加载模式:panel.ControlContainer.Controls.Add(control); 如果用panel.Controls.Add(control);则可能出现模块发生位移问题 ...

  5. [leetcode]_Best Time to Buy and Sell Stock I && II

    一个系列三道题,我都不会做,google之答案.过了两道,第三道看不懂,放置,稍后继续. 一.Best Time to Buy and Sell Stock I 题目:一个数组表示一支股票的价格变换. ...

  6. 基于HTML5 的人脸识别活体认证

    近几年,人脸识别技术在身份认证领域的应用已经有了较多应用,例如:支付宝.招行的取款.养老金领取等方面,但在杜绝假冒.认证安全性等方面,目前还是一个比较需要进一步解决的课题,特别是在移动端的活体认证技术 ...

  7. Azkaban遇到的坑-installation Failed.Error chunking

    在使用azkaban做spark作业调度时,在上传zip包时报installation Failed.Error chunking错误,原来是于我们所编写的应用会上传到 MySQL 存储,过大的zip ...

  8. 深入浅出MongoDB(一)NoSQL

    从本文开始,我们一起学习一下MongoDB相关内容,在学习MongoDB之前,首先要做的就是学习NoSQL. 为什么要学习NoSQL,原因很简单,因为MongoDB是NoSQL数据库的一种,换言之,如 ...

  9. Php output buffering缓存及程序缓存

       在php中有时为了控制程序的输出显示顺序,提供了output buffering缓存(php自身缓存机制). 若Ob缓存开启,需要输出的就先存在ob缓存里,再到程序缓存里.若没有开启,则直接进入 ...

  10. 10)Java Error and Exception

      1>异常继承类        Error类和Exception类都继续自Throwable类      Error表示系统级的错误情况,如内存错误这样程序无法通过自身的处理再继续执行下去的情 ...