作者:Zhang Yong,AMD工程师;来源:AMD开发者社区
OpenCV支持许多与计算机视觉和机器学习相关的算法,并且正日益扩展。OpenCV Python是OpenCV的Python API,本文介绍一种方法在petalinux环境下使用OpenCV的Python API实现USB camera视频流的读取显示。
在Petalinux 环境下执行带有opencv API的python脚本,需要在rootfs里加入一些package和library。显示端可以使用Xorg(X11) server。这些可以在petalinux rootfs menuconfig里使能。
Python3:
python3
libpython3
packagegroup-petalinux-python-modules
Opencv:
Opencv
opencv-apps
packagegroup-petalinux-opencv
Xorg:
xserver-xorg
xserver-xorg-extension-dri
xserver-xorg-extension-glx
xserver-xorg-utils
packagegroup-core-x11
packagegroup-core-x11-base
packagegroup-core-x11-xserver
然后一个简单的python显示脚本如下,
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
while(True):
ret, frame = cap.read()
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
cv2.imshow('live', frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
这个脚本打开/dev/video0设备,读取video frame并显示。执行python脚本之前需要先启动Xorg server,Xorg的配置可以参考blog “如何在zcu102板卡上创建DisplayPort 1.4 Tx Subsystem core的pipeline“。启动Xorg并执行python脚本的命令如下,
Sudo Xorg &
Export DISPLAY=:0.0
Sudo python3 xxx.py
然后显示器就可以显示/dev/video0连接的USB camera的图像了。
Zynq MPSoC
Zynq® UltraScale+™ MPSoC(多处理器系统芯片)是赛灵思(Xilinx)推出的一款集成了处理器系统和可编程逻辑的器件。这一系列芯片采用 UltraScale+ 架构,结合 ARM 处理器和可编程逻辑,为嵌入式系统提供了灵活性和高性能。
Zynq UltraScale+ MPSoC 适用于嵌入式系统设计,特别是对于需要高度定制和硬件加速的应用。它为设计人员提供了处理器和 FPGA 的集成解决方案,以满足各种复杂系统的需求。