創(chuàng)龍首頁 >關于創(chuàng)龍 > 新聞資訊 > 技術文章
聯(lián)系我們
Contact Us公司總機:020-8998-6280
技術熱線:020-3893-9734
技術郵箱:support@tronlong.com
銷售郵箱:sales@tronlong.com
技術干貨 | i.MX 8視頻開發(fā)案例全集
2021/07/29
前言:
本文主要介紹基于NXP i.MX 8M Mini處理器的視頻開發(fā)案例,主要包含:
(1) 基于GStreamer的USB攝像頭視頻采集、軟件解碼、邊緣檢測、顯示案例。
(2) 基于GStreamer的網絡攝像頭視頻采集、H.264解碼、顯示案例。
(3) 基于GigE工業(yè)相機的圖像采集、顯示、保存案例。
(4) 基于MIPI Camera OV4689攝像頭演示Linux子系統(tǒng)V4L2的使用案例。
(5) H.265視頻硬件解碼功能演示。
案例測試硬件平臺 TLIMX8-EVM評估板(NXP i.MX 8M Mini)
圖 1 TLIMX8-EVM評估板
案例詳細說明、源碼請掃描下方二維碼或點擊下載鏈j接:http://site.tronlong.com/pfdownload
評估板購買鏈接:http://tronlong.tmall.com
1 USB攝像頭案例
1.1 案例說明
本案例使用GStreamer API通過ARM Cotrex-A53從USB攝像頭獲取MJPEG格式視頻流并進行軟件解碼,然后使用OpenCV對圖像進行Sobel(邊緣檢測)算法處理,再將經過處理的圖像在顯示屏中實時顯示。
程序工作流程框圖如下所示:
圖 2
本案例使用的OpenCV版本為4.4.0,開發(fā)參考文檔:https://docs.opencv.org/4.4.0。
1.2 案例測試
請按照下圖進行硬件連接,將USB CMOS攝像頭(廠家:銳爾威視,型號:RER-USB4KHDR01-V100)連接至評估板USB2 HOST接口,將HDMI顯示屏連接至評估板HDMI OUT接口。
圖 3
將案例bin目錄下的gst_mjpeg_dec_cv_edge文件拷貝至評估板文件系統(tǒng)中。評估板上電并進入文件系統(tǒng)后,可執(zhí)行如下命令查詢攝像頭的幀率、分辨率、設備節(jié)點等參數。
Target# gst-device-monitor-1.0
圖 4
在gst_mjpeg_dec_cv_edge文件所在路徑下,執(zhí)行如下命令查詢程序參數說明,具體如下表。
Target# ./gst_mjpeg_dec_cv_edge --help
圖 5
執(zhí)行如下命令采集"/dev/video1"設備節(jié)點的視頻流,視頻流將在Cortex-A53中進行Sobel算法處理,再將經過處理的圖像在顯示屏中實時顯示。
Target# systemctl start weston@root.service //打開Weston界面
Target# ./gst_mjpeg_dec_cv_edge -d /dev/video1 -w 1920 -h 1080 -f 30
圖 6
表 1
從打印結果可看到圖像處理平均耗時約為50.65ms,圖像采集幀率為25fps,圖像處理幀率為13fps。
備注:
(1) 本案例使用的攝像頭在拍攝靜態(tài)物品時,幀率會有所降低。
(2) 圖像邊緣處理平均時間,指調用OpenCV Sobel算法進行邊緣檢測的耗時。
(3) 計算圖像邊緣處理幀率時使用的總時間,包含從Gstreamer隊列獲取數據進行邊緣檢測、傳輸數據到Gstreamer隊列的所有耗時。
本案例使用Sobel算法處理效果圖如下所示。
圖 7
本案例使用Cortex-A53進行圖像采集、軟件解碼和算法處理,本次測試CPU占用率為131.2%,如下圖所示。
備注:i.MX 8M Mini有4個Cortex-A53核心,CPU占用率最高可達400%。
圖 8
2 網絡攝像頭案例
2.1案例說明
本案例使用GStreamer API通過Cotrex-A53從網絡攝像頭獲取H.264格式視頻流數據,然后通過VPU進行H.264視頻硬件解碼,再將解碼的圖像在顯示屏中實時顯示。
程序工作流程框圖如下所示:
圖 9
2.2案例測試
圖 10
請按照上圖進行硬件連接,并將該案例bin目錄下的gst_rtsp_dec_display可執(zhí)行文件拷貝至評估板文件系統(tǒng)中。在gst_rtsp_dec_display文件所在路徑下,執(zhí)行如下命令查詢程序參數說明,具體如下表。
Target# ./gst_rtsp_dec_display --help
圖 11
本案例使用的網絡攝像頭IP地址為192.168.0.178,請確保評估板和網絡攝像頭IP地址處于同一網段。
圖 12
執(zhí)行如下命令采集視頻流數據,并將解碼后的視頻流數據在顯示屏中實時顯示。
Target# systemctl start weston@root.service //開啟Weston
Target# ./gst_rtsp_dec_display -u rtsp://admin:tl123456@192.168.0.178:554/h264/ch1/main/av_stream -w 1920 -h 1080 -f 25 -s 1 //192.168.0.178為攝像頭IP地址
圖 13
圖 14
本次測試CPU占用率為63.7%,如下圖所示。
備注:i.MX 8M Mini有4個Cortex-A53核心,CPU占用率最高可達400%。
圖 15
2.3時延測試
時延測試方法:使用攝像頭采集PC機顯示屏的在線秒表圖像。PC機顯示畫面與評估板顯示畫面的時間差,即為時延。進行多次測試,時延結果取其平均值。
表 2
3 GigE工業(yè)相機案例
本案例通過評估板千兆網口接入GigE工業(yè)相機實現圖像采集、圖像顯示和圖像保存的功能。相機型號:acA720-290gm,品牌:Basler,分辨率可配置最大為720x542,幀率可達291fps。相機詳細信息見官網鏈接:
https://www.baslerweb.com/cn/products/cameras/area-scan-cameras/ace/aca720-290gm/
本案例實測達到的幀率為:采集并顯示為720x540@138fps,采集并保存為720x540@31fps。
測試案例gige_capture位于產品資料“4-軟件資料\Demo\base-demos\”路徑下。為方便測試,產品資料中提供了經過驗證的測試程序可執(zhí)行文件,位于gige_capture的bin目錄下,源碼位于gige_capture的src目錄下。
3.1GigE網絡相機配置
本小節(jié)使用Basler官方提供的pylonSDK開發(fā)包,在PC機Ubuntu中對GigE工業(yè)相機進行IP地址獲取方式、采集幀率等參數配置。
具體配置步驟可下載詳細資料查看。
3.2圖像采集測試
通過網線將評估板RGMII接口和GigE工業(yè)相機連接至相同路由器,評估板默認支持HDMI顯示,請先正確連接HDMI顯示屏。
備注:如GigE工業(yè)相機配置為靜態(tài)IP,則需通過網線將評估板和GigE工業(yè)相機直連,并設置評估板和GigE工業(yè)相機為同一網段。
圖 16
將“gige_capture\lib\”目錄下的庫文件壓縮包libpylon_arm64.tar.gz拷貝至評估板文件系統(tǒng)任意目錄,并進入壓縮包所在目錄執(zhí)行如下命令將其解壓至“/usr/lib/”目錄。
Target# tar -xvf libpylon_arm64.tar.gz -C /usr/lib
圖 17
GigE工業(yè)相機上電,進入評估板文件系統(tǒng),請將bin目錄下的可執(zhí)行文件gige_capture拷貝至評估板文件系統(tǒng)任意路徑下。在gige_capture可執(zhí)行文件所在目錄下執(zhí)行如下命令查看程序參數說明。
Target# ./gige_capture --help
圖 18
執(zhí)行如下命令掃描局域網內的GigE工業(yè)相機,并測試GigE工業(yè)相機圖像采集幀率。
Target# ./gige_capture -m scan
圖 19
并執(zhí)行如下命令關閉Weston界面,將GigE工業(yè)相機采集的圖像顯示到顯示屏上。若圖像顯示不清晰,請旋轉旋鈕調節(jié)相機鏡頭光圈和焦距,GigE工業(yè)相機會以設置的分辨率720x540進行實時采集,本次實測采集并顯示的處理幀率為138fps,進行采集并顯示的幀率會受硬件性能和網絡環(huán)境的影響有一定的波動。
Target# systemctl stop weston@root.service
Target# ./gige_capture -m display -o /dev/fb
圖 20
圖 21
本次測試的CPU占用率如下所示。
圖 22
執(zhí)行如下命令,將GigE工業(yè)相機采集的圖像以gray8的格式保存至指定路徑的文件中。采集并存儲的幀數會受設備的讀寫速率影響,本次實測為31fps。
Target# ./gige_capture -m save -o /home/root/test.gray8
圖 23
將保存的文件復制到Windows下,使用“gige_capture\tools\yuvplayer.exe”程序打開test.gray8文件,點擊“Size -> Custom”,設置圖像格式Width為720,Height為540,點擊“Color -> Y”,點擊播放按鈕即可顯示圖像,如下所示。
圖 24
圖 25
圖 26
4 MIPI攝像頭案例
4.1案例功能
本案例基于MIPI Camera OV4689攝像頭演示Linux子系統(tǒng)V4L2的使用,支持YUYV、RGGB、RGB565格式轉換為RGB格式。
案例支持list、save、display三種功能模式,通過命令行參數傳入主程序進行設置。功能模式簡要說明如下:
(1) list:查詢攝像頭設備,并打印設備相關信息,比如分辨率、幀率、格式等。
(2) save:采集攝像頭的圖像數據,保存到指定文件,格式為YUYV。
(3) display:采集攝像頭圖像數據,寫入到framebuffer以實現
圖像顯示,格式為YUYV。
程序工作流程框圖如下所示:
圖 27
圖 28
V4L2開發(fā)參考鏈接:
https://linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html
www.kernel.org/doc/html/v4.10/media/uapi/v4l/v4l2.html
4.2 案例測試
請使用FPC軟排線將MIPI Camera OV4689攝像頭模塊(型號:MCAM400)連接至評估板MIPI CAMERA接口。
圖 29
將本案例bin目錄下的可執(zhí)行程序v4l2_capture復制到評估板文件系統(tǒng),并進入可執(zhí)行程序所在目錄,執(zhí)行如下命令查看程序參數信息。
Target# ./v4l2_capture --help
圖 30
參數解析:
-m:指定運行模式。
-d:指定目標設備。
-t:設備接入接口選擇,支持usb(默認)、vpif、csi。
-F:指定采集格式,支持YUYV、RGB565、RGGB、BGGR。
-w:指定采集幀寬。
-h:指定采集幀高。
-f:指定采集幀率,若攝像頭不支持幀率設置,則設為0。
-o:指定輸出目標,save模式下為文件路徑,display模式下為fb設備節(jié)點。
-n:save模式下使用,為保存幀數。
-v:版本信息。
--help:幫助信息。
a) 保存測試彩條圖像
為驗證評估板MIPI CAMERA接口通路是否正常,將配置攝像頭產生一幀彩條圖像,進行采集和保存。
請執(zhí)行如下命令加載驅動。
Target# insmod ov4689.ko test_pattern_enable=1
圖 31
執(zhí)行如下命令查詢V4L2設備相關參數信息,"/dev/video0"為V4L2設備節(jié)點。
備注:MIPI Camera OV4689攝像頭不支持設置幀率,默認僅支持1920*1080分辨率,幀率為60fps。
Target# ./v4l2_capture -m list -d /dev/video0
圖 32
執(zhí)行如下命令保存一幀測試圖像數據至指定文件中。"-m save"指定為save模式,"-w 1920 -h 1080"指定以1920*1080分辨率進行圖像采集,"-F BGGR"指定采集格式,"-o /home/root/test.raw"指定文件保存路徑,"-n 1"指定采集1幀圖像。
Target# ./v4l2_capture -m save -d /dev/video0 -w 1920 -h 1080 -F BGGR -o ./test.raw -n 1
圖 33
將生成的test.raw文件拷貝至bayer2rgb工具目錄下,執(zhí)行如下命令將圖像數據轉換為RGB格式,并保存在當前目錄下的test.tiff文件中。
Host# ./bayer2rgb -i ./test.raw -o ./test.tiff -w 1920 -v 1080 -b 8 -f BGGR -t
圖 34
在圖形操作界面雙擊test.tiff文件進行圖像查看。
圖 35
圖 36
b) 保存實際采集圖像
重啟評估板,執(zhí)行如下命令加載驅動。
Target# insmod ov4689.ko
圖 37
執(zhí)行如下命令保存一幀攝像頭采集的圖像數據至指定文件中。"-m save"指定為save模式,"-w 1920 -h 1080"指定以1920*1080分辨率進行圖像采集,"-F BGGR"指定采集格式,"-o /home/root/test.raw"指定文件保存路徑,"-n 1"指定采集1幀圖像。
Target# ./v4l2_capture -m save -d /dev/video0 -w 1920 -h 1080 -F BGGR -o ./test.raw -n 1
圖 38
將生成的test.raw文件拷貝至bayer2rgb工具目錄下,執(zhí)行如下命令將圖像數據轉換為RGB格式,并保存在當前目錄下的test.tiff文件中。
Host# ./bayer2rgb -i ./test.raw -o ./test.tiff -w 1920 -v 1080 -b 8 -f BGGR -t
圖 39
在圖形操作界面雙擊test.tiff文件進行圖像查看。
備注:攝像頭的曝光增益等參數未進行優(yōu)化,同時攝像頭傳輸的數據為原始數據,轉換工具僅進行簡單的顏色轉換,并未做ISP處理。
圖 40
圖 41
5 H.265視頻硬件解碼案例
由于本章節(jié)測試步驟較長,因此不在本文進行描述。如需了解詳細測試步驟,請下載資料進行查閱。
如對方案有興趣或想進一步了解的,歡迎咨詢我司區(qū)域經理。
華東區(qū):周經理18928714181(微信同號)
華南區(qū):陳經理13316243398(微信同號)
西南西北區(qū):陳經理13201632920(微信同號)
華北區(qū):李經理13121853038(微信同號)

服務熱線