Ubuntu22.04下带CUDA的OpenCV导入报错:gst_base_src_new_segment未定义
Ubuntu22.04编译带CUDA支持的OpenCV兼容算力6.1GPU的问题解决记录
环境配置与编译概况
- 系统:Ubuntu 22.04
- 依赖版本:OpenCV 4.2.0、Nvidia Toolkit 11.5、gcc/g++ 10.4.0、Anaconda虚拟环境Python 3.10.6
- 编译结果:完成安装,仅出现4条重复的"无害"警告,但后续运行阶段出现问题
遇到的具体问题
- 系统命令行执行
pkg-config --libs opencv时,提示库不存在 - Anaconda虚拟环境中导入OpenCV触发错误:
错误发生在/lib/x86_64-linux-gnu/libgstapp-1.0.so.0: undefined symbol: gst_base_src_new_segmentcv2/__init__.py的bootstrap()执行阶段 - 未找到cv2.so文件,且发现Python3.10.6由gcc11.2.0编译,怀疑版本不匹配可能引发问题
- 编译时必须执行
conda install -c conda-forge gcc=10.4.0,否则会出现其他编译错误
问题排查与尝试修复过程
- 定位根因:Ubuntu22.04默认搭载gstreamer1.20,而Anaconda环境自带gstreamer1.14.0,
gst_base_src_new_segment是gstreamer1.18版本新增的符号,版本差异导致符号查找失败 - 尝试多种修复方案均失败:
- 降级系统gstreamer风险过高,未执行
- 升级Anaconda环境的gstreamer:
- 执行
conda uninstall gstreamer会连带卸载Anaconda Navigator,不可行 - 通过anaconda源安装gstreamer默认是1.14.0版本,无法升级
- 指定fastchan源安装1.20.3版本,无法替换环境核心库版本
- 执行
- 尝试安装Anaconda官方提供的gstreamer1.18.5更新包,出现兼容性错误,无法完成更新
最终解决方法
由于实际使用中不需要gstreamer(FFmpeg可满足需求),重新编译OpenCV时添加编译参数:
-D WITH_GSTREAMER=OFF
禁用gstreamer支持后,问题彻底解决。
内容的提问来源于stack exchange,提问作者Scott Bollt
相关产品推荐
相关产品推荐

