"); //-->
ByToradex秦海
1). 简介
Python 编程语言因其极强的可读性、可移植、易于维护,以及丰富的第三方扩展组件,如数据库、数学计算、图形,甚至机器视觉、人工智能、深度学习框架都提供Python支持。随着嵌入式处理的计算性能逐渐增强,原来主要用于 PC、服务器端的开发语言,目前也正越来越多地被嵌入式项目所采纳,加速项目的开发,缩短产品上市时间。接下来的内容,我们将介绍如何在嵌入式计算机模块基于 Embedded Linux 使用 Python,并演示基于 Python 和OpenCV的条形码、二维码扫描功能。
本文所演示的平台来自于ToradexColibri iMX6ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的计算机模块平台。
2. 准备
a).Colibri iMX6 ARM核心版配合ColibriEvaBoard载板,连接调试串口UART1到开发主机方便调试。
b).ColibriiMX6系统默认的 BSP 中并没有包含Python 和 OpenCV组件,用户可以通过在线安装或者使用基于Ycoto/OpenEmbedded框架重新编译生成包含所需功能的 BSP;我们推荐采用第二种方法,定制化的 BSP 有利于产品进行量产编程。
./在线安装 Python 以及扩展组件相关命令
------------------------------------
root@colibri-imx6:~# opkg update
root@colibri-imx6:~# opkg list | greppython
root@colibri-imx6:~# opkg install python[optionally list additional packages…]
------------------------------------
./基于OpenEmbedded框架编译,基本操作请按照这里的说明进行编译,需要修改的文件请参考如下,image更新方法请参考这里。
./local.conf文件
添加如下内容,在生成的image中增加qtwebengine组件
------------------------------------
IMAGE_INSTALL_append = " opencvpython3 python3-pip zbar"
PACKAGECONFIG_append_pn-opencv = "python3gstreamer"
------------------------------------
3. 测试 Python 环境
在开发板上命令终端执行
------------------------------------
root@colibri-imx6:~# python3
Python 3.5.3 (default, Apr 11 2018,16:03:29)
[GCC 7.3.0] on linux
Type "help","copyright", "credits" or "license" for moreinformation.
>>> import cv2
>>> cv2.__version__
'3.3.0-dev'
------------------------------------
生成的 BSP 包含了 Python3.5.3 和OpenCV 3.3。由于 Python 是一种解释型的语言,不需要预编译,你现在就可以直接在Colibri iMX6 上学习 Python 开发或者运行你现有的 Python 程序。但是这个时候你可能会遇到 Python 模块没有安装的问题,从而无法运行你自己开发的 Python 项目。
4. Python 模块安装
./Python 的一个优势是可以直接在本地下载并安装模块组件,这在嵌入式设备上也同样适用。由于之前在OpenEmbedded/Yocto中我们已经添加了 python3-pip,那么现在可以是 pip 命令来安装,如imutils,这是我们接下来所需的组件。
------------------------------------
root@colibri-imx6:~# pip3 install imutils
------------------------------------
./除了在线安装,Python 模块也可以通过离线交叉编译后进行编译。Zbar默认只支持 python2,我们需要安装pyzbar来支持我们 BSP 中的 python3。
首先你需要安装Linux SDK,其提供了所需的交叉编译器、头文件、库文件以及一些基本的编译配置文件。另外建议在开发电脑上也安装和 BSP 上版本一致的 Python。
------------------------------------
ben@ben-T430u:~$ cd/usr/local/oecore-x86_64
ben@ben-T430u:~$.environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi
ben@ben-T430u:~$ exportCFLAGS="$CFLAGS -I$SDKTARGETSYSROOT/usr/bin/python3.5m"
ben@ben-T430u:~$ exportHOSTPYTHON=/usr/local/bin/python3.5
ben@ben-T430u:~$ $HOSTPYTHON setup.py build
ben@ben-T430u:~$ $HOSTPYTHON setup.pybdist_egg
------------------------------------
将编译完成的 pyzbar-0.1.7-py3.5.egg 复制到开发板上,使用 easy_install-3.5 安装
------------------------------------
root@colibri-imx6:~# easy_install-3.5pyzbar-0.1.7-py3.5.egg
Processing pyzbar-0.1.7-py3.5.egg
creating/usr/lib/python3.5/site-packages/pyzbar-0.1.7-py3.5.egg
Extracting pyzbar-0.1.7-py3.5.egg to /usr/lib/python3.5/site-packages
Adding pyzbar 0.1.7 to easy-install.pthfile
Installing read_zbar.py script to /usr/bin
Installing read_zbar script to /usr/bin
------------------------------------
./另外OpenEmbedded还提供了大量 Python相关的组件,可以方便地集成到 BSP 中。

到此,我们已经在开发板上完成 Python 环境搭建,所需的组建也都已经安装。下面我们将通过几个 Python 项目来演示条形码、二维码图片的识别,以及在 USB 摄像头上实时读取二维码。
5. PyZbar条形码和二维码读取
./识别静态图片上的条形码
------------------------------------
root@colibri-imx6:~#./barcode_scanner_image.py -i barcode1.png
------------------------------------

./识别静态图片上的二维码
------------------------------------
root@colibri-imx6:~#./barcode_scanner_image.py -i QR-tdx.png
------------------------------------

./通过USB 摄像头实时识二维码
------------------------------------
root@colibri-imx6:~#./barcode_scanner_video.py -o rec.csv
------------------------------------

6). 总结
通过上面的介绍,我们发现借助 Python 可以方便、快捷地实现一些复杂功能,如果采用其他语言工具开发,可能需要更多的代码和时间。由于 Python 本身的特性,在嵌入式上,特别是CPU和 RAM 资源有限的平台,需要充分考虑 Python 运行所带来的开销,确保应用能够可靠运行。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
收听质子,价格低于100美元
封装代号尺寸
TI 基于 MSP430 微处理器的电容式触摸按键方案
美国出口管制瞄准存储及成熟芯片
TX―KCl02的应用连接图
集成电路盛会 聚焦中国苏州
3G:从选择良好的合作伙伴开始
TX-KBl02的应用接线图
电机上的字母数字都代表啥?中英文铭牌参数全解析!
TI 视频解码器和 ADC/DAC 产品及其应用
箱式变电站的配置、安装及常见电气故障处理,一次给大家讲清楚!
AI当前技术路线后劲不足:模型虽持续改进,但无法实现AGI
江波龙mSSD存储介质衍生新形态:全球首款AI Storage Core发布
手机产业 中国企业开始挑战跨国公司
TX-KDl02的应用连接图
TAS5162 社区视频
远程机器人技术有望扩大中风治疗的可及性
PCM4222 社区视频
多普勒效应在感应电路制作中的应用
高频电路用基板材料
高速电路PCB回流路径
嵌入式工程师必看!接口协议,不是通了就行,这么简单。
中国男人的五大“情色心理”
5 Easy Steps to Building an Embedded Processor System Inside an FPGA
感应洗手器原理图
现在电脑身中剧毒
成套低压开关柜内部如何实现有效隔离?一文读懂四种典型形式
对PC IO空间读写的工具软件
TX-KCl02IGBT驱动器的原理框图
IGBT驱动电路的短路保护功能测试方法二