You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04+OpenCV3.2运行YOLO报错cv2无dnn属性问题如何解决

问题根源
  • OpenCV 3.2版本原生不内置dnn模块:dnn模块是OpenCV 3.3及以上版本才正式纳入官方主发行包的功能,你当前使用的3.2版本默认没有该模块。
  • 你的环境安装了ROS Melodic,ROS Melodic默认绑定的OpenCV版本就是3.2,Python运行时会优先导入ROS自带的无dnn模块的OpenCV包,哪怕你单独装了高版本也可能被覆盖优先级。
  • 补充:你的代码文件命名为import cv2.py,和cv2模块名重名,也可能引发导入异常。
解决方法

方法1:虚拟环境隔离安装高版本OpenCV(推荐,不影响ROS依赖)

  • 安装虚拟环境工具:
sudo apt install python3-virtualenv python-virtualenv
  • 创建并激活独立的Python虚拟环境:
# 创建名为cv_env的虚拟环境,可自行调整Python版本
virtualenv -p python3 cv_env
source cv_env/bin/activate
  • 激活虚拟环境后,安装带dnn模块的OpenCV版本:
pip install opencv-python==3.4.18.65 opencv-contrib-python==3.4.18.65
  • 把你的代码文件重命名为不与模块冲突的名称,比如yolo_test.py,再运行代码即可正常调用cv2.dnn接口。

方法2:编译OpenCV 3.2添加dnn模块(不推荐,适配难度高)

  • 下载与OpenCV 3.2版本匹配的opencv_contrib源码,编译时开启DNN模块的编译选项,重新编译安装OpenCV。该操作容易破坏ROS的OpenCV依赖,非必要不建议操作。

内容的提问来源于stack exchange,提问作者박홍준

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:15:03