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

运行平台

这次的内容是基于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. Discussing the scenery in the program of 863 with Doctor Zhang!

    今天,下午去了NEC找章丰博士师兄交流了一下863项目关于SDN场景的设置问题,通过交流感觉师兄的水平和层次完全在另一个层次,以及人家的谈吐. 主要的结论有以下几个:(1)移动性管理场景  (2)特殊 ...

  2. 获取AX的窗口所有控件的lableID及内容

    思路,穷举Forms\TargetFormName 在AOT上面的路径得到TreeNode, 遍历各控件的属性. a1,先读Label属性,没有就读Caption属性及Text属性. a2,若a1取不 ...

  3. HTML5-新API选择器

    新的选择器document.querySelector("selector");selector:根据CSS选择器返回第一个匹配到的元素,如果没有匹配到,则返回null;支持: C ...

  4. dig out secrets beneath AirSig

    My sister installed AirSig last week. She is so exciting about this new techknology and she won't st ...

  5. Android代码写View

    1.Java Code package com.fish.helloworld; import android.app.Activity; import android.content.Context ...

  6. 安装 android sdk 不能更新问题

    1 要更改host 文件 2在Android SDK Manager的Tool->Option中按照如下修改

  7. jquery中选择ID以什么字符开头的匹配主要用于多个上传控件的时候,id无法使用,而且class不起作用的时候

    $("[id^=remark]")选择ID以remark开头的所有数据进行匹配

  8. 如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

    大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时. 默认情况下,ASP.NET 提供请求验证.只要窗体发送包含任何 HTML,该验证都会引发错误. 您可以使用下列方法防止脚本利用: ...

  9. CentOS 6.4安装Kangle面板

    kangle web server一键安装包是一个用Linux Shell编写的可以为CentOS 6 VPS(VDS)或独立主机安装kangle web server(kangle,easypane ...

  10. Win7系统下VS2008安装SP1补丁解决JQuery无智能提示的问题

    jQuery在vs2008中的智能提示 1  安装VS2008SP1补丁 要确保您的vs2008已经打了sp1补丁,在vs2008的帮助里的关于,要是安装了sp1,会出现“版本 3.5 sp1”,没安 ...