AGX Xavier 搭建360环视教程【二、环境配置】

AGX Xavier 场景下的 【OpenCV + CUDA + GStreamer】 重装 & 编译的2025年稳定方案,不要采用ffmpeg方案。

1️⃣ 先卸载老版本

AGX 自带很多预装包,原则:卸载干净,避免旧库和新编译冲突。


🔹 卸载 OpenCV

dpkg -l | grep opencv
sudo apt-get remove --purge libopencv* python3-opencv

# 自己 make install 装过的也一起删
sudo rm -rf /usr/local/include/opencv4
sudo rm -rf /usr/local/lib/libopencv*
sudo rm -rf /usr/local/lib/pkgconfig/opencv4.pc
sudo rm -rf /usr/local/lib/python3*/dist-packages/cv2*


# 卸载 pip 版本(如果有)
pip3 uninstall opencv-python opencv-contrib-python



sudo ldconfig

2️⃣ 检查 CUDA 和 GStreamer

AGX Xavier 自带 CUDA,JetPack 4.5 默认是 CUDA 10.2 + GStreamer 1.14.x
→ 不要自己乱装 CUDA,保持 JetPack 自带就行。

检查一下:

nvcc --version
gst-launch-1.0 --version

确认有:

CUDA compilation tools, release 10.2, V10.2.89
GStreamer 1.14.x

 

3️⃣ 安装依赖

sudo apt-get update

# 编译工具
sudo apt-get install -y build-essential cmake git pkg-config

# GStreamer (一定要有)
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

# 图像编解码
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

# OpenGL 和 V4L2
sudo apt-get install -y libgtk-3-dev libcanberra-gtk* libtbb2 libtbb-dev libdc1394-22-dev

# Python
sudo apt-get install -y python3-dev python3-numpy

4️⃣ 编译 OpenCV (推荐 4.5.5)

🔹 拉源码

cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.5.5

cd ~
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.5.5


cd ~/opencv
mkdir build && cd build

将opencv_contrib放在opencv的文件夹下。后面配置CMake路径时注意统一。

解决ADE被墙

 cmake的过程中,会因为下载ADE被墙,而停顿,因此只好手动下载。

wget https://github.com/opencv/ade/archive/refs/tags/v0.1.1f.zip
# 解压到 opencv_contrib/modules/ade 或者 opencv/3rdparty/ade
unzip v0.1.1f.zip -d v0.1.1f
opencv/
 ├── 3rdparty/
 │    ├── ade/
 │         ├── CMakeLists.txt
 │         ├── sources
           ├── v0.1.1f
           ├── v0.1.1f.zip
             ...

只要在 opencv/3rdparty/ade/ 里能找到它的 CMakeLists.txt

ADE_DIR 必须指向 解压后的源码根目录

并在CMake时加上一句:

-D ADE_DIR=$HOME/opencv/3rdparty/ade/v0.1.1f

 解决NVIDIA_OPTICAL_FLOW被墙

🔹 CMake 推荐配置(AGX Xavier 专属 🚀)

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules -D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON -D WITH_CUBLAS=ON -D WITH_GSTREAMER=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_LIBV4L=ON -D WITH_OPENGL=ON -D WITH_QT=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['include'])") -D PYTHON3_LIBRARY=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['stdlib'])") -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_TESTS=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=OFF -D  OPENCV_FORCE_3RDPARTY_BUILD=ON -D ADE_DIR=$HOME/opencv/3rdparty/ade/v0.1.1f ..

需要包含:

-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D PYTHON3_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['include'])") \
-D PYTHON3_LIBRARY=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['stdlib'])") \

 否则会提示:

 python3 -c "import cv2; print(cv2.getBuildInformation())" | grep CUDATraceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
nvidia@agxA:~/opencv/build$ python3 -c "import cv2; print(cv2.getBuildInformation())" | grep GStreamer
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

🔹 编译 & 安装

make -j$(nproc)   # Xavier AGX 建议一次用 4-6 核,别一次全开,避免 OOM
sudo make install
sudo ldconfig

5️⃣ 验证

# OpenCV
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep CUDA
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep GStreamer

# GStreamer
gst-inspect-1.0 | grep nv

如果报错如下:

 python3 -c "import cv2; print(cv2.getBuildInformation())" | grep CUDATraceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
nvidia@agxA:~/opencv/build$ python3 -c "import cv2; print(cv2.getBuildInformation())" | grep GStreamer
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
cd ~/opencv/build
find . -name "cv2*.so"


# 预计输出如下:
# ./lib/python3/cv2.cpython-36m-aarch64-linux-gnu.so

 如果没找到,说明你 cmake 没开:

-D BUILD_opencv_python3=ON

如果找到了,手动拷贝到 Python 路径,先看看python的版本。然后找到指定的路径下。

which python3
which pip3
python3 --version

从下面指令中,找到 site-packages 路径

python3 -m site

 输出如下:

sys.path = [
    '/home/nvidia/opencv/build',
    '/home/nvidia/ws_intersection/devel/lib/python2.7/dist-packages',
    '/home/nvidia/ws_lego_loam/devel/lib/python2.7/dist-packages',
    '/home/nvidia/ws_can/devel/lib/python2.7/dist-packages',
    '/home/nvidia/ws_drv_other/devel/lib/python2.7/dist-packages',
    '/opt/ros/melodic/lib/python2.7/dist-packages',
    '/usr/lib/python36.zip',
    '/usr/lib/python3.6',
    '/usr/lib/python3.6/lib-dynload',
    '/home/nvidia/.local/lib/python3.6/site-packages',
    '/home/nvidia/.local/lib/python3.6/site-packages/torchvision-0.11.1-py3.6-linux-aarch64.egg',
    '/usr/local/lib/python3.6/dist-packages',
    '/usr/lib/python3/dist-packages',
    '/usr/lib/python3.6/dist-packages',
]
USER_BASE: '/home/nvidia/.local' (exists)
USER_SITE: '/home/nvidia/.local/lib/python3.6/site-packages' (exists)
ENABLE_USER_SITE: True

将so文件,拷贝到指定路径下:

sudo cp ./lib/python3/cv2*.so /usr/local/lib/python3.6/dist-packages/

注意要和你的 Python 版本对得上!

关键点总结:

1️⃣ JetPack 4.5 的 CUDA/GStreamer 都需要自己编时打开
2️⃣ ADE 可手动解压替代自动下载
3️⃣ JNITesseract 非刚需可以跳过或后装
4️⃣ BUILD_opencv_python3=ON 和 Python 路径一定配好
5️⃣ 不要混用 pip 的 opencv-python,它是 CPU 版,没 GPU



补充:远程控制环境

# 更新系统
sudo apt update

# 安装x11vnc(推荐,可以共享现有桌面会话)
sudo apt install x11vnc

 配置x11vnc(共享现有桌面)

# 设置VNC密码
x11vnc -storepasswd

# 启动x11vnc服务,共享当前桌面
x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 -shared

创建系统服务(自动启动)

# 删除系统级服务
sudo rm /etc/systemd/system/x11vnc.service
sudo systemctl daemon-reload

# 创建用户级服务
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/x11vnc.service

输入以下内容。 

[Unit]
Description=x11vnc service
After=graphical-session.target

[Service]
Type=simple
Environment=DISPLAY=:0
ExecStartPre=/bin/bash -c 'sleep 15 && until pgrep -x "Xorg|X"; do sleep 2; done'
ExecStart=/usr/bin/x11vnc -display :0 -auth guess -forever -loop -noxdamage -repeat -rfbauth %h/.vnc/passwd -rfbport 5900 -shared
Restart=on-failure
RestartSec=10

[Install]
WantedBy=default.target
# 确保VNC密码文件存在
mkdir -p ~/.vnc
x11vnc -storepasswd ~/.vnc/passwd

# 启用用户服务
systemctl --user daemon-reload
systemctl --user enable x11vnc.service
systemctl --user start x11vnc.service

# 检查状态
systemctl --user status x11vnc.service

在电脑上安装realVNC软件,然后添加设备地址,填写自己的IP加端口。比如:

192.168.10.236:5900

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值