编译和运行指南
==============
按照本文档的过程编译和运行示例:
1. 输出环境变量
2. 通过Jetpack,安装NVIDIA(r) CUDA(r)/Opencv4tegra(r) / cuDNN(r)/ GIE(r)(也被称作TensorRT(tm))
3. 创建软连接。
4. 编译和运行示例。
输出环境变量
==============
1. 基于目标平台,使用以下命令,导出ARM应用二进制接口:
$ export TEGRA_ARMABI=aarch64-linux-gnu
$ export DISPLAY=:0
安装NVIDIA(r) CUDA(r)/ Opencv4tegra(r) / cuDNN(r) / GIE(r) (also known as TensorRT(tm)) via Jetpack
=============================================================================
注:如果你已经安装了它们,你可以跳过以下步骤。
1. 从以下网站下载Jetpack包:
https://developer.nvidia.com/embedded/downloads
2. 使用以下命令,在host机器上运行安装脚本:
$ chmod +x ./JetPack-L4T-<version>-linux-x64.run
$ ./JetPack-L4T-<version>-linux-x64.run
3. 选择"Jetson TX1 Development Kit(64bit) and Ubuntu host".
4. 选择 "custom" and 点击 "clear action".
5. 选择"CUDA Toolkit for L4T", "OpenCV for Tegra","cuDNN Package" 和 "TensorRT",然后安装它们。
6. 对于安装细节,查看安装文件夹。
创建所需的软连接
=====================
使用以下命令创建软连接:
$ cd /usr/lib/${TEGRA_ARMABI}
$ sudo ln -sf tegra-egl/libEGL.so.1 libEGL.so
$ sudo ln -sf tegra-egl/libGLESv2.so.2 libGLESv2.so
$ sudo ln -sf libv4l2.so.0 libv4l2.so
编译和运行示例
=====================
1. 改变路径为
$HOME/tegra_multimedia_api/samples
对于本节中的程序。
2. 关于交叉编译的详细细节,看以下文件(可选)
tegra_multimedia_api/CROSS_PLATFORM_SUPPORT
1. 视频解码
-----------------------------
这个示例演示了怎样从本地文件解码H.264/H.265视频,支持解码功能。
建立并运行00_video_decode,使用以下命令:
$ cd 00_video_decode
$ make
$ ./video_decode <in-file> <in-format> [options]
-----------------------------------------------------
这个示例演示了怎样从本地YUV文件编码为H.264/H.265,使用可支持的编码功能。
编译和运行01_video_encode,使用以下命令:
$ cd 01_video_encode
$ make
$ ./video_encode <in-file> <in-width> <in-height> <encoder-type> <out-file> [OPTIONS]
8. 视频格式转换
-------------------------------------------------
这个示例演示了怎样使用V4L2接口来做视频格式转换和视频缩放。
编译和运行07_video_convert,使用以下命令:
$ cd 07_video_convert
$ make
$ ./video_convert <in-file> <in-width> <in-height> <in-format> <out-file> <out-width> <out-height> <out-format> [OPTIONS]
9. 一个相机预览流的JPEG编码
--------------------------------------------------
这个示例演示了怎样使用Argus接口来预览相机流并且同时使用libjpeg-8b接口来编码JPEG图像。
编译和运行 09_camera_jpeg_capture,使用以下命令:
$ cd 09_camera_jpeg_capture
$ make
$ ./camera_jpeg_capture [OPTIONS]
这个捕捉预览流能够显示通过HDMI。JPEG文件被保存在当前路径。
10. 使用相机录制流,H.264编码
------------------------------------------------------------
这个示例演示了怎样使用Argus接口来得到实时的相机流,并且把它给视频编码器来生成H.264/H.265视频文件。
编译和运行10_camera_recording,使用以下命令:
$ cd 10_camera_recording
$ make
$ ./camera_recording [OPTIONS]
H.264视频文件被创建在当前目录下。
11. 相机目标识别
------------------------------------
这个示例演示了怎样使用相机Argus接口来得到实时的相机流,并且把它们给Caffe来进行目标分类。
想了解这个示例的细节,查看11_camera_object_identification/README。
12. Backend
---------------------------------
这个示例演示如何从本地文件,解码多路的H.264和H.265,并且给YUV通道中的一个进入GIE来实时。最后,显示框内的原始图像来自GIE。
Backend with GIE(默认)
在Makefile里做以下变化,确保以下变量被设置为1:
ENABLEGIE := 1
编译和运行
backend with GIE,使用以下命令:
$ cd backend
$ make
$ ./backend 1 ../../data/video/sample_outdoor_car_1080p_10fps.h264 H264 \
--gie-deployfile ../../data/model/GoogleNet-modified.prototxt \
--gie-modelfile ../../data/model/GoogleNet-modified-online_iter_30000.caffemodel \
--gie-forcefp32 0 --gie-proc-interval 1 -fps 10
注:GIE的批大小能够被配置从以下文件的第三行。
../../data/model/GoogleNet-modified.prototxt
在这里有效值是1(默认),或者2,或者4。
Backend without GIE
在Makefile里做以下变化,确保以下变量被设置为0:
ENABLEGIE := 0
编译和运行backend without GIE ,使用以下命令:
$ cd backend
$ make
$ ./backend <channel-num> <in-file1> <in-file2>... <in-format> [options]