Zybo智能小车识别图像中的文字
智能小车识别图像中的文字
运行平台
这次的内容是基于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智能小车识别图像中的文字的更多相关文章
- 利用百度文字识别API识别图像中的文字
本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...
- Android调用OCR识别图像中的文字
// CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...
- 使用 Python 识别并提取图像中的文字
1. 介绍 介绍使用 python 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情. 2. 必备工具 tesseract-ocr 下载地址: https://github. ...
- 利用Hough变换识别图像中的直线
引入 近期看到2015年数学建模A题太阳影子定位中的第四问,需要根据附件中视频里的直杆的太阳影子的变化确定拍摄地点.其实确定拍摄地点这个问题并不是十分困难,因为有前三问的铺垫,我们已经得出了太阳影子长 ...
- KNN识别图像上的数字及python实现
领导让我每天手工录入BI系统中的数据并判断数据是否存在异常,若有异常点,则检测是系统问题还是业务问题.为了解放双手,我决定写个程序完成每天录入管理驾驶舱数据的任务.首先用按键精灵录了一套脚本把系统中的 ...
- 从图像中检测和识别表格,北航&微软提出新型数据集 TableBank
纯学术 的识别表格的文章: http://hrb-br.com/5007404/20190321A0B99Y00.html https://github.com/doc-analysis/TableB ...
- OpenCV_contrib里的Text(自然场景图像中的文本检测与识别)
平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake 待解决!!!Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景 ...
- 使用TensorFlow进行训练识别视频图像中物体
本教程针对Windows10实现谷歌公布的TensorFlow Object Detection API视频物体识别系统,其他平台也可借鉴. 本教程将网络上相关资料筛选整合(文末附上参考资料链接),旨 ...
- 树莓派-4WD智能小车操作小结
树莓派-4WD智能小车操作小结 树莓派4B-4WD智能小车,双层结构,第一层结构为:小车扩展板(底层)+树莓派主板,通过铜柱隔离固定,小车扩展板相当于计算机的外设扩展板:上面一层为第二层,是三个舵机承 ...
随机推荐
- Discussing the scenery in the program of 863 with Doctor Zhang!
今天,下午去了NEC找章丰博士师兄交流了一下863项目关于SDN场景的设置问题,通过交流感觉师兄的水平和层次完全在另一个层次,以及人家的谈吐. 主要的结论有以下几个:(1)移动性管理场景 (2)特殊 ...
- 获取AX的窗口所有控件的lableID及内容
思路,穷举Forms\TargetFormName 在AOT上面的路径得到TreeNode, 遍历各控件的属性. a1,先读Label属性,没有就读Caption属性及Text属性. a2,若a1取不 ...
- HTML5-新API选择器
新的选择器document.querySelector("selector");selector:根据CSS选择器返回第一个匹配到的元素,如果没有匹配到,则返回null;支持: C ...
- dig out secrets beneath AirSig
My sister installed AirSig last week. She is so exciting about this new techknology and she won't st ...
- Android代码写View
1.Java Code package com.fish.helloworld; import android.app.Activity; import android.content.Context ...
- 安装 android sdk 不能更新问题
1 要更改host 文件 2在Android SDK Manager的Tool->Option中按照如下修改
- jquery中选择ID以什么字符开头的匹配主要用于多个上传控件的时候,id无法使用,而且class不起作用的时候
$("[id^=remark]")选择ID以remark开头的所有数据进行匹配
- 如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入
大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时. 默认情况下,ASP.NET 提供请求验证.只要窗体发送包含任何 HTML,该验证都会引发错误. 您可以使用下列方法防止脚本利用: ...
- CentOS 6.4安装Kangle面板
kangle web server一键安装包是一个用Linux Shell编写的可以为CentOS 6 VPS(VDS)或独立主机安装kangle web server(kangle,easypane ...
- Win7系统下VS2008安装SP1补丁解决JQuery无智能提示的问题
jQuery在vs2008中的智能提示 1 安装VS2008SP1补丁 要确保您的vs2008已经打了sp1补丁,在vs2008的帮助里的关于,要是安装了sp1,会出现“版本 3.5 sp1”,没安 ...