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板子上测试,但在其他平台上面测试通过。

传送门

安卓工程下载

课程后记

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

转载于:https://www.cnblogs.com/wsine/p/4777368.html

陆地自主车(AutonomousLandVehiele,简称ALv)是一种能够在道路和野外连续 地!实时地自主运动的智能移动机器人,其研究涉及多个学科的理论与技术,具有重大的研究价值和应用价值"在各种导航技术,视觉导航相对与其他的方法,本身不发出光以及其他辐射源,具有隐蔽性好,测量快速!准确等优点"因此,视觉导航是ALV研究的一个重要内容"本论文旨在对应用于地面自主车导航的视觉系统进行研究和实现"对道路图像的准确!实时采集是视觉研究的基础,本文首先对此问题展开研究"论文的第二几章提出了视频采集卡的具体技术指标并设云I一了一专用的图像采集一卡"该方案使用PhiliPs公司的TDA87os及ASA7196作为前端模数转换!视频解码芯片,将电视信号直接转换成RGB数字信号,并由现场可编程门阵列(FPGA)作为控制器将数字信号存入128KBX3的帧缓冲存储器,PCI接口芯片PCIgO54提取有用数据送到"实践证明该采集卡能够完成对道路图像的准确!实时采集"嵌入式系统以应用为心!以计算机技术为基础!软件硬件可裁剪!可靠性高!成本低!体积小!功耗低的特点决定了其是地面自主车计算!控制系统的理想选择,本文接着对嵌入式系统在陆地自主车视觉导航的应用进行了研究"第二章重点介绍了嵌入式系统的组成及应用开发"首先明确了嵌入式系统的定义和体系结构,接着介绍了其软硬件组成"在此基础上介绍了一套成熟的嵌入式开发系统"第四章提出了一套适用于嵌入式系统的道路识别算法"该算法结合了基于聚类的闭值分割和边缘跟踪算法,并在不影响处理结果的基础上对做了一定的优化,降低了算法的空间和时间复杂度,更适合于在嵌入式系统上运行,能同时用于检测结构化和非结构化道路环境下的道路边界"实践证明该算法能够在上述两种道路环境下取得良好的检测效果"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值