python 嵌入式 linux 产品 发布_基于嵌入式Linux进行Python应用开发
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
------------------------------------
上面相關測試的完整Python代碼可以從這里下載。
6).總結
通過上面的介紹,我們發現借助??Python?可以方便、快捷地實現一些復雜功能,如果采用其他語言工具開發,可能需要更多的代碼和時間。由于??Python?本身的特性,在嵌入式上,特別是CPU和?RAM?資源有限的平臺,需要充分考慮??Python?運行所帶來的開銷,確保應用能夠可靠運行。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。
總結
以上是生活随笔為你收集整理的python 嵌入式 linux 产品 发布_基于嵌入式Linux进行Python应用开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上市公司年报披露时间
- 下一篇: 深南电路股票适合长期持有吗 带你了解这