文章目录

  • 1.前言
  • 2. linux配置
    • 2.1解决pynq联网
    • 2.2解决pyzbar库下载
    • 2.3解决jupyter导入库
      • 2.3.1 首先说明问题的由来
      • 2.3.2 方法一:
      • 2.3.3 方法二 :
  • 3. 提供代码

1.前言

单单实现一个条形码识别就花了将近一个星期,这篇文章我就详细介绍这段时间走过的坑,代码附在文末,着急需要的小伙伴直接翻到最后即可

2. linux配置

要想实现本项目,首先解决以下三大要点,也着实浪费了很多时间

2.1解决pynq联网

pynq联网的教程网上可谓是不少,但是我却整了很久。
首先是在家里,我采用

所示的方法,然后成功ping通外网
在学校时这个方法却解决不了,我尝试了网上很多方法都无法解决(可能我太菜了),最终在重新烧录了几次镜像后发现:直接把网线连到宿舍的路由器上就连上外网了…

具体还有关于修改下载源变为镜像源的方法可以参考其他博客

2.2解决pyzbar库下载

这个库下载推荐采用

pip3 install pyzbar

这个库安装的路径也要注意,命令行下输入

pip3 show pyzbar

我的在这里:

图 2.2.1. pyzbar的位置

多说一句,下面的zbar包我采用

sudo apt-get install python-zbar

得到,为什么不用pip3,因为pip3下载这个总是报错,即使是

pip3 upgrade

也不行,不是pip3版本的问题。
我的linux镜像是v2.3版本的,不知道大家采用v2.5或者更高会不会好些

图 2.2.2. zbar的位置

2.3解决jupyter导入库

2.3.1 首先说明问题的由来

我发现使用

pip3 install pillow

PIL在jupyter下能导入,但是却不能导入pyzbar
又发现在命令行输入 python3后,可以导入pyzbar,但不能导入zbar

图 2.3.1. python3导入pyzbar成功,导入zbar不成功

我在命令行输入pyhton 解释器下发现不能导入pyzbar,但可以导入zbar
这就引起了我的注意,最终我发现原来pip3来的pyzbar有单独的存储路径,apt-get同理
至于为什么python和python3不能引入相同的包
那就得

import sys
sys.path

采用语句来观察,发现引用路径不一致。我想我知道了症结所在:

图 2.3.2. 不太通顺的解释

红字\color{#FF3030}{红字}红字不太通顺,翻译成 人话 就是:
jupyter要设置为 支持引用 存储pyzbar包的路径

2.3.2 方法一:

修改环境变量

说明,以下为引用:

文章源地址:
https://blog.csdn.net/c20081052/article/details/79715132

Linux 下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户:
一:用于当前终端:
在当前终端中输入:export PATH=$PATH:<你的要加入的路径>
不过上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效。

  export NDK_ROOT=/home/jiang/soft/Android-ndk-r8e

只能在当前终端使用
二:用于当前用户:
在用户主目录下有一个 .bashrc 隐藏文件,可以在此文件中加入 PATH 的设置如下:

$ gedit ~/.bashrc

加入:

export PATH=<你的要加入的路径>:$PATH

如果要加入多个路径,只要:

export PATH=<你要加入的路径1>:<你要加入的路径2>: ...... :$PATH

当中每个路径要以冒号分隔

这样每次登录都会生效

添加PYTHONPATH的方法也是这样,在.bashrc中添加

export PYTHONPATH=/home/zhao/setup/caffemaster/python:/home/zhao/setup/mypy:$PYTHONPATH

保存后在终端输入 $ source ~/.bashrc 使环境变量立即生效

三:用于所有用户

$ sudo gedit /etc/profile

加入:

export PATH=<你要加入的路径>:$PATH

就可以了。
终端输入:echo $PATH 可以查看环境变量

注意,修改环境变量后,除了第一种方法立即生效外,第二第三种方法要立即生效,可以source ~/.bashrc或者注销再次登录后就可以了!

到此引用结束

2.3.3 方法二 :

在代码中加入语句

import sys
sys.path
sys.path.append('/home/xilinx/.local/lib/python3.6/site-packages')

sys.path是查看jupyter的库查找路径,可以查看你的jupyter是否包括了你的包的路径
一般来说库导入失败都是由于这个原因——jupyter库路径
这是设置引用额外引用路径的方法:

sys.path.append('')

可参考这篇文章:
https://www.cnblogs.com/mandy-study/p/7735801.html

3. 提供代码

# 关键识别代码
barcodes = decode(image)
def decode (image,barcodes):# loop over the detected barcodesfor barcode in barcodes:# extract the bounding box location of the barcode and draw the# bounding boxr surrounding the barcode on the image(x, y, w, h) = barcode.rectcv2.rectangle(image, (x, y),(x + w,y + h), (255, 0, 0), 5)# the barcode data is a bytes object so if we want to draw it on# our output image wre need to convert it to a string firstbarcodeData = barcode.data.decode("utf-8")barcodeType = barcode.type# draw the barcode data and barcode type on the imagetext ="{} ({})". format(barcodeData,barcodeType)cv2.putText(image,text,(x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,.8, (255, 0, 0), 2) # print the barcode type and data to the terminalprint("[INFO] Found {} barcode: {}".format(barcodeType,barcodeData))plt.figure(figsize=(10,10))plt.imshow(image)plt.show()# Decoding barcodesdecode(image,barcodes)

最终结果,发现框框并不是很贴合,可能是照片照的问题。但是识别的结果完全正确

完整代码请见连接:
https://download.csdn.net/download/weixin_44360347/15816188

打开是.ipynb格式

全攻略:实现pynq-z2条形码识别相关推荐

  1. Gradle脚本基础全攻略

    转载http://blog.csdn.net/yanbober/article/details/49314255 [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处 ...

  2. Linux下架设邮件服务器全攻略(二)

    Linux下架设邮件服务器全攻略(二) (三)sendmail.cf难以配置,Sendmail的开发人员为sendmail的管理者提供了更加容易理解和配置的sendmail.mc文件. 一般情况下,要 ...

  3. dos盘启动计算机,最新万能 DOS 启动盘制作全攻略(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)...

    最新万能 DOS 启动盘制作全攻略(软盘+光盘+U盘+硬盘+NTFS+应急实用工具) 更新时间:2006年12月21日 00:00:00   作者: 首先说明一下各种操作系统启动到DOS的途径: WI ...

  4. FPGA开发全攻略——ISE基本操作

    原文链接: FPGA实战开发技巧(2) FPGA开发全攻略连载之十二:FPGA实战开发技巧(3) FPGA开发全攻略连载之十二:FPGA实战开发技巧(4) 5.2 如何进行FPGA设计早期系统规划 作 ...

  5. 彻底分析ARP病毒查杀防范全攻略

                           彻底分析ARP病毒查杀防范全攻略      近期在全国范围内大规模爆发arp病毒及其各种变种.如果局域网中发现许多台电脑中毒,电脑中毒后会向同网段内所有计 ...

  6. SAP HANA Cloud Connector图文全攻略

    SAP HANA Cloud Connector图文全攻略 http://mp.weixin.qq.com/s?__biz=MjM5OTI2MjgyMA==&mid=2651785635&am ...

  7. Win7开机加速全攻略四:系统服务优化

    IT168 实用技巧]如何加快Windows 7系统的开机速度一直都是大家热议的问题,网络中流传的方法也很多,本站为大家整理了一些加快Windows 7系统的开机速度的方法,在接下去的几天中,将陆续分 ...

  8. linux系统scsi硬盘,Linux系统SCSI磁盘管理全攻略(一)

    Linux系统SCSI磁盘管理全攻略(一) 介绍 本系列文章系统.全面地介绍了Linux 的SCSI设备管理机制和整套操作命令.包括以下六大主题:Linux SCSI子系统概述 Linux主机LUN识 ...

  9. 刀口舔血,步步惊心!——Android中小开发者/团队广告盈利全攻略

    http://blog.sina.com.cn/s/blog_8627ac3c0100zje9.html 刀口舔血,步步惊心! Android中小开发者/团队广告盈利全攻略及"Gemini ...

最新文章

  1. Hdu 3341 Lost#39;s revenge (ac+自己主动机dp+hash)
  2. 在一个200*20的bmp中写汉字
  3. java parse_Java命令行界面(第9部分):parse-cmd
  4. 计算机系统存储器分类和总线分类
  5. php虚拟机java虚拟机,Java虚拟机的具体详解
  6. Ubuntu 安装hadoop 伪分布式
  7. Ubuntu 下的PDF阅读器
  8. 如何把门禁卡做成你用不起的样子?B站up主自制迷你卡片,公司小区通刷,还带墨水屏的那种...
  9. 哔哩哔哩2019秋招技术岗(前端、运维、后端、移动端)第一套笔试题
  10. 给程序员推荐的一款机械键盘
  11. 【wpa_supplicant】入门 eloop 机制
  12. 【脚本】一键切换单位与家庭wifi网络环境
  13. 五线谱入门,程序员也可以玩音乐
  14. 37种传感器(十)之手指心跳检测模块+Stduino NanoUNO
  15. vue中Route和router、routes的关系
  16. 是什么引发了我对知识的渴望
  17. 【Verilog】FPGA控制RGB灯WS2812B
  18. 结对项目-小游戏连连看
  19. 2 W 字的 Linux 命令总结!
  20. [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]

热门文章

  1. 一款在线免费的甘特图,让你轻松管理项目进度
  2. NPDP产品经理小知识:安索夫矩阵
  3. 【读书笔记】销售运营-策略制定的6大原则及5个常用工具
  4. 麦当劳肯德基供应商使用变质过期肉:吃不死人
  5. 测试中常用的批处理命令
  6. [NOIP2020] 微信步数
  7. Python之禅 吾心笃定
  8. 祭奠我死去的CET-6
  9. Word中遇到的各种问题及解决方案
  10. 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度。 程序的输入是一个整数,表示华氏温度。输出对