OpenVINO环境下Movidius NCS1无法读取IP摄像头的解决方法
解决OpenVINO环境下无法读取RTSP摄像头流的问题
这问题我之前帮朋友排查过类似的,核心原因大概率是OpenVINO自带的OpenCV版本没有启用RTSP/FFmpeg支持——毕竟OpenVINO打包的OpenCV主要是为了推理优化,会砍掉一些非必需的视频解码功能,而你普通用户环境里的OpenCV是完整安装的,自带了FFmpeg解码,所以能正常读取RTSP流。
下面是具体的排查和解决步骤:
1. 先确认问题根源
激活你的OpenVINO环境,运行以下命令查看OpenCV的编译配置:
python -c "import cv2; print(cv2.getBuildInformation())"
在输出里找到FFmpeg相关的部分,如果显示Disabled,那就是问题所在——这个OpenCV版本不支持RTSP流解码。
2. 解决方案:替换/重装带FFmpeg支持的OpenCV
你有几个可选方案,按操作复杂度从低到高排序:
方案一:在OpenVINO环境中重新安装完整OpenCV
这是最简单的方法,直接用pip覆盖OpenVINO自带的简化版OpenCV:
激活OpenVINO环境后,运行:
pip install opencv-python
安装完成后,再运行你的测试代码,应该就能正常读取RTSP流了。
方案二:调用系统中已有的完整OpenCV
如果你不想在OpenVINO环境里重装OpenCV,可以让Python优先加载普通用户环境里的完整OpenCV:
- 先在普通用户环境中运行以下命令,获取OpenCV的安装路径:
输出类似python -c "import cv2; print(cv2.__file__)"/usr/local/lib/python3.9/dist-packages/cv2这样的路径。 - 在你的代码开头添加以下内容,让Python先加载这个路径下的OpenCV:
这样就能绕过OpenVINO自带的简化版OpenCV,直接用完整版本。import sys # 替换成你刚才获取的路径 sys.path.insert(0, '/usr/local/lib/python3.9/dist-packages') import cv2
方案三:编译带FFmpeg支持的OpenCV(适合进阶用户)
如果上面两种方法都不适用,你可以手动编译OpenCV并启用FFmpeg支持:
- 先安装FFmpeg依赖:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev - 下载OpenCV源码,cmake时指定启用FFmpeg:
cmake -DWITH_FFMPEG=ON -DCMAKE_INSTALL_PREFIX=/path/to/openvino/env/lib/python3.x/site-packages .. - 编译并安装,替换OpenVINO环境中的OpenCV。
3. 额外调试建议
- 把你代码里注释掉的
print语句打开,或者添加状态检查,比如先确认摄像头流是否成功打开:cap = cv2.VideoCapture('rtsp://admin:sphbr7410@192.168.240.151:554/cam/realmonitor?channel=1&subtype=0') if not cap.isOpened(): print("无法打开RTSP流,请检查地址或网络连接") exit() - 可以暂时清空OpenVINO的环境变量测试,比如运行
unset LD_LIBRARY_PATH后再执行代码,排除库冲突的问题。
内容的提问来源于stack exchange,提问作者Jasar Orion
相关产品推荐
相关产品推荐

