本文主要介绍基于全志科技T3国产平台的视频开发案例,内容包含了gige_capture案例、案例、GigE工业相机配置、图像采集并显示、图像采集以及案例编译保存、关键代码等。
本次测试板卡为基于创龙科技TLT3-EVM是一款基于全志科技T3处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板,每核主频高达1.2GHz。
评估板接口资源丰富,引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出MIPI LCD、LVDS LCD、TFT LCD、CVBS OUT、CAMERA、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、1080P@45fps H.264视频硬件编解码,并支持SATA大容量存储接口。
gige_capture案例
案例说明
表 1
案例名称 | 目录 | |
---|---|---|
gige_capture | bin | 可执行程序 |
lib | 程序运行依赖库 | |
pylonSDK | 第三方pylonSDK开发包 | |
src | 程序源码 | |
tools | yuvplayer工具 |
案例功能具体说明如下:
- 查询局域网内的GigE工业相机。
- 采集GigE工业相机图像数据,写至framebuffer以实现图像显示,格式为gray8。
- 采集GigE工业相机图像数据,保存至指定文件中,格式为gray8。
程序流程图如下图所示。
案例测试
本案例使用GigE工业相机型号为Basler的acA720-290gm,最高支持分辨率为720x540,帧率可达291fps。
通过网线将评估板千兆网口RGMII ETH和GigE工业相机连接至相同路由器,确保在同一局域网下。将评估板VGA OUT通过VGA线连接至VGA显示屏,用于显示采集图像,硬件连接如下图所示。
如通过网线将评估板和GigE工业相机直连,需将GigE工业相机配置为静态IP,并设置评估板和GigE工业相机的IP地址为同一网段。
GigE工业相机配置
本小节使用Basler官方提供的pylonSDK开发包,在PC机Ubuntu中对GigE工业相机进行IP地址获取方式、采集帧率等参数配置。
将案例"pylonSDKx86_64"目录下的pylonSDK-5.1.0.12682-x86_64.tar.gz压缩包拷贝至Ubuntu任意路径,并进入压缩包所在目录执行如下命令将其解压至当前目录下。
Host# tar -zxf pylonSDK-5.1.0.12682-x86_64.tar.gz -C .
将GigE工业相机上电,通过网线将PC机和GigE工业相机连接至相同路由器,并执行如下命令进入"pylon5/bin/"目录下运行IpConfigurator工具,配置IP地址获取方式。
Host# cd pylon5/bin/
Host# ./IpConfigurator
程序运行成功后,将会打开pylon IP Configurator窗口,点击Refresh刷新并识别GigE工业相机。由配置界面可看到GigE工业相机支持静态IP(Static IP)和动态IP(DHCP)两种模式。本次采用动态IP模式进行测试,选择DHCP选项,点击Save保存。
IP配置完成后,关闭配置窗口,然后在bin目录下,执行如下命令运行PylonViewerApp工具,配置采集帧率等参数。
Host# ./PylonViewerApp
在如下界面中双击选中GigE工业相机设备,"User Level"选择Expert。然后点击打开"Transport Layer"栏目,将"Packet Size"设置为1500、"Inter-Packet Delay"设置为1100。"Inter-Packet Delay"参数值会影响采集帧率,不同相机需根据实际情况进行修改。
点击菜单栏按钮进行连续采集,即可查看GigE工业相机采集到的图像(如下图)。配置完成后,请点击按钮释放GigE工业相机连接。
图像采集并显示
评估板上电,将案例lib目录下的库文件压缩包libpylon_armhf.tar.gz拷贝至评估板文件系统任意目录,并进入压缩包所在目录执行如下命令将其解压至"/usr/lib/"目录。
Target# tar -xvf libpylon_armhf.tar.gz -C /usr/lib
将案例bin目录下的gige_capture可执行文件拷贝至评估板文件系统任意目录下。在其所在目录下执行如下命令查看程序参数说明。
Target# ./gige_capture --help
执行如下命令扫描局域网内的GigE工业相机,并测试GigE工业相机图像采集帧率,本次测试为159fps。
Target# ./gige_capture -m scan
并执行如下命令,先将Qt程序关闭,并初始化framebuffer,再运行程序将GigE工业相机采集图像显示至VGA显示屏上。若图像显示不清晰,请调节相机镜头光圈和焦距。本次实测GigE工业相机采集并显示的处理帧率为82fps,实际的帧率会受硬件性能和网络环境的影响有一定的波动。
Target# killall Launcher MediaUI CameraUI //关闭Qt程序
Target# fbinit //初始化Framebuffer
Target# echo 0,0 > /sys/class/disp/disp/attr/fb2ui
Target# ./gige_capture -m display -o /dev/fb0
本次测试的CPU占用率如下所示。
图像采集并保存
在gige_capture可执行文件所在目录下执行如下命令,将GigE工业相机采集的图像以gray8的格式保存至指定路径的文件中。图像采集并保存的帧数会受存储设备的读写速率影响,本次实测为25fps。
Target# ./gige_capture -m save -o /root/test.gray8
请将保存的test.gray8文件复制到Windows下(本次通过U盘复制),使用案例tools目录下的yuvplayer.exe程序打开文件,点击"Sixe -> Custom",设置图像格式Width为720,Height为540,点击"Color -> Y",点击播放按钮即可显示图像,如下所示。
案例编译
将案例src源码目录和pylonSDK目录拷贝至Ubuntu同一工作目录下,执行如下命令,进入"pylonSDK/armhf/"目录,将压缩包pylonSDK-5.1.0.12682-armhf.tar.gz解压至当前目录。
Host# cd pylonSDK/armhf/
Host# tar -zxf pylonSDK-5.1.0.12682-armhf.tar.gz
执行如下命令,进入src目录下,修改makefile文件,将PYLON_ROOT的参数值修改为ARM端pylonSDK实际路径。
Host# cd ../../src/
请先确保已参考Linux系统使用手册编译过LinuxSDK,构建T3处理器对应的GCC编译器。在src目录下执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# CC=/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc make
想要获取案例的关键代码以及更多测试案例详细说明,欢迎在评论区留言~