在 Jetson Orin 中,系统预装的 OpenCV 通常位于系统默认的 Python 环境路径中(如 /usr/lib/python3.x/dist-packages
),而 Miniconda 环境默认会优先使用自身环境内的库,因此直接在 Miniconda 环境中导入 cv2
可能会失败(提示找不到模块)。
要在 Miniconda 环境中使用系统预装的 OpenCV(带 CUDA 加速的优化版本),核心是让 Miniconda 的 Python 解释器能识别到系统 OpenCV 的安装路径。具体步骤如下:
首先,在
系统默认 Python 环境(非 Miniconda 环境)中,找到 OpenCV 的安装位置:
打开终端(未激活 Miniconda 环境时),运行:
python3 -c "import cv2; print(cv2.__file__)"
输出通常类似:
/usr/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-arm-linux-gnueabihf.so
(路径中的
python3.8
可能随系统默认 Python 版本变化,比如
python3.9
)
核心路径是其
父目录,即系统 OpenCV 的 Python 包根目录,例如:
/usr/lib/python3.8/dist-packages/cv2
系统预装的 OpenCV 是针对系统默认 Python 版本编译的(如 Python 3.8)。如果 Miniconda 环境的 Python 版本与系统不一致(比如系统是 3.8,conda 环境是 3.9),可能会因版本不兼容导致无法导入。
建议创建与系统 Python 版本一致的 Miniconda 环境,例如系统是 Python 3.8,则:
conda create -n your_env python=3.8
conda activate your_env
如果你的 Miniconda 环境中之前通过 pip
或 conda
安装过 opencv-python
等包,会与系统 OpenCV 冲突,需先卸载:
pip uninstall opencv-python opencv-contrib-python
conda remove opencv
通过软链接或添加路径的方式,让 Miniconda 环境的 Python 能找到系统 OpenCV。
将系统 OpenCV 的 Python 包目录链接到 Miniconda 环境的 site-packages
中(这样 Python 会自动识别)。
先找到 Miniconda 环境的
site-packages
路径:
激活环境后运行:
python -c "import site; print(site.getsitepackages()[0])"
输出类似:
/home/your_username/miniconda3/envs/your_env/lib/python3.8/site-packages
为系统 OpenCV 创建软链接到上述路径:
假设系统 OpenCV 路径为
/usr/lib/python3.8/dist-packages/cv2
,运行:
ln -s /usr/lib/python3.8/dist-packages/cv2 /home/your_username/miniconda3/envs/your_env/lib/python3.8/site-packages/cv2
临时或永久将系统 OpenCV 路径添加到 Miniconda 环境的 Python 搜索路径中。
export PYTHONPATH="/usr/lib/python3.8/dist-packages:$PYTHONPATH"
永久生效(每次激活环境自动加载):
在 Miniconda 环境的激活脚本中添加上述命令:
mkdir -p ~/miniconda3/envs/your_env/etc/conda/activate.d/
nano ~/miniconda3/envs/your_env/etc/conda/activate.d/env_vars.sh
在文件中写入:
export PYTHONPATH="/usr/lib/python3.8/dist-packages:$PYTHONPATH"
保存后,下次激活环境时会自动生效。
激活 Miniconda 环境,运行 Python 并测试:
conda activate your_env
python -c "import cv2; print('OpenCV 版本:', cv2.__version__); print('CUDA 支持:', cv2.cuda.getCudaEnabledDeviceCount() > 0)"
- 若输出版本号,且
CUDA 支持
为 True
,说明成功使用系统预装的带 CUDA 加速的 OpenCV。
- 系统 OpenCV 依赖 Jetson 预装的 CUDA、cuDNN 等库,Miniconda 环境无需重复安装这些库(直接使用系统的即可)。
- 若后续系统更新导致 OpenCV 路径变化,可能需要重新执行上述链接或路径配置步骤。