Ubuntu:VideoCapture 打开本地avi/mp4视频失败

Ubuntu下OpenCV打开本地视频失败解决办法

最近在做yolov5视频检测,想着先测试一下本地的视频文件,结果就遇到报错:

failed to open video ../vtest.avi
[ERROR:0] VIDEOIO(cvCreateFileCapture_Images(filename.c_str())): raised OpenCV exception:

OpenCV(3.4.12) /home/xxx/Downloads/opencv-3.4.12
### 问题分析 在使用 Python 和 OpenCV 进行摄像头录像测试时,如果调用 `cv2.imshow()` 显示图像界面,可能会遇到与 Qt 平台插件相关的错误,例如: ``` qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" ``` 该错误通常出现在无图形界面的环境中(如远程服务器、SSH 连接或容器中),因为 OpenCV 依赖 Qt 的图形子系统来显示图像窗口,而在这些环境中缺少必要的图形支持[^2]。 ### 解决方案 #### 1. **避免使用 `cv2.imshow()`** 如果不需要实时显示视频流,仅需录制视频文件,可直接跳过 `cv2.imshow()` 和 `cv2.waitKey()` 的调用,仅保留视频写入功能。例如: ```python import cv2 cap = cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*'XVID') fps = 20.0 frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) out = cv2.VideoWriter('output.avi', fourcc, fps, frame_size) while cap.isOpened(): ret, frame = cap.read() if not ret: break out.write(frame) cap.release() out.release() ``` 这种方式适用于服务器环境,避免图形界面相关的插件加载问题[^2]。 #### 2. **设置 Qt 插件路径** 若仍需使用 `cv2.imshow()`,可尝试手动设置 Qt 插件路径,确保系统能找到 `xcb` 插件。例如: ```bash export QT_DEBUG_PLUGINS=1 export QT_PLUGIN_PATH=/home/your_user/anaconda3/envs/your_env/lib/python3.9/site-packages/cv2/qt/plugins ``` 其中路径应根据实际 OpenCV 安装目录调整。此方法在某些 Linux 环境中可解决插件加载失败问题[^3]。 #### 3. **切换平台插件** OpenCV 支持多种平台插件(如 `eglfs`, `offscreen`, `minimal` 等),可通过设置环境变量指定使用其他插件,例如: ```bash export QT_QPA_PLATFORM=minimal ``` 该方式可绕过对 `xcb` 的依赖,适用于无法配置图形环境的场景。 #### 4. **使用虚拟显示工具(如 Xvfb)** 在无图形界面的服务器上,可安装并启动虚拟显示服务(如 Xvfb),模拟图形环境以支持 OpenCV 的图像显示功能: ```bash sudo apt-get install xvfb xvfb-run python your_script.py ``` 此方法适合需要完整图形支持但运行在无头环境中的应用[^1]。 #### 5. **使用远程图形转发(如 X11 Forwarding)** 若通过 SSH 连接服务器,可启用 X11 转发功能,将图形界面显示在本地机器上: ```bash ssh -X user@server ``` 在服务器端运行 OpenCV 程序时,图像窗口将通过本地 X server 显示。此方法适用于开发调试阶段[^1]。 --- ### 相关问题 1. 如何在无图形界面的服务器上使用 OpenCV 显示图像? 2. 如何在 Python 中使用 OpenCV 调整摄像头分辨率? 3. 如何使用 OpenCV 同时处理多个摄像头? 4. 如何在录制视频的同时对每一帧进行图像处理? 5. 如何在 Docker 容器中运行 OpenCV 图形界面程序?
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习哪些事

谢谢老板,请我喝杯蜜雪冰城呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值