python - Opencv 在我的笔记本电脑上为我的项目工作,但停止在树莓派上工作
问题描述
大家早上好!我绝望(这是我的第一篇文章)。我正在尝试使用 openvino 工具包设置人体检测系统。我在下面的openvino 多目标跟踪中使用了由 openvino 提供的示例项目。我首先在我的计算机(ubuntu)上测试了它们并且它有效。我现在尝试在树莓派上运行该项目,但它卡在了 opencv 级别。我按照以下教程在 rasbian 上安装 openvino来设置 openvino。调试时,我意识到问题出在 cv2.videocapure (链接)。显然后端 ffmepg 和 GStreamer 都存在问题。
我运行以下命令
python3 multi_camera_multi_target_tracking.py -i http://192.168.137.160:4747/video --m_detector model/intel/person-detection-retail-0013/FP32/person-detection-retail-0013.xml --m_reid model/intel/person-reidentification-retail-0031/FP32/person-reidentification-retail-0031.xml --config config.py -l /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64/libcpu_extension_avx2.so
我有以下结果
INFO: 2021-03-07 21:07:34: Opening file http://192.168.137.160:4747/video
[DEBUG:0] global ../opencv/modules/videoio/src/videoio_registry.cpp (171) VideoBackendRegistry VIDEOIO: Builtin backends(8): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); V4L2(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930)
[DEBUG:0] global ../opencv/modules/videoio/src/videoio_registry.cpp (195) VideoBackendRegistry VIDEOIO: Available backends(8): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); V4L2(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930)
[ INFO:0] global ../opencv/modules/videoio/src/videoio_registry.cpp (197) VideoBackendRegistry VIDEOIO: Enabled backends(8, sorted by priority): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); V4L2(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930)
[ WARN:0] global ../opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(FFMPEG): trying capture filename='http://192.168.137.160:4747/video' ...
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (359) getPluginCandidates VideoIO pluigin (FFMPEG): glob is 'libopencv_videoio_ffmpeg*.so', 1 location(s)
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (366) getPluginCandidates - /opt/intel/openvino/opencv/lib: 1
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (370) getPluginCandidates Found 1 plugin(s) for FFMPEG
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (175) libraryLoad load /opt/intel/openvino/opencv/lib/libopencv_videoio_ffmpeg.so => FAILED
[ WARN:0] global ../opencv/modules/videoio/src/cap.cpp (170) open VIDEOIO(FFMPEG): backend is not available (plugin is missing, or can't be loaded due dependencies or it is not compatible)
[ WARN:0] global ../opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(GSTREAMER): trying capture filename='http://192.168.137.160:4747/video' ...
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (359) getPluginCandidates VideoIO pluigin (GSTREAMER): glob is 'libopencv_videoio_gstreamer*.so', 1 location(s)
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (366) getPluginCandidates - /opt/intel/openvino/opencv/lib: 1
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (370) getPluginCandidates Found 1 plugin(s) for GSTREAMER
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (175) libraryLoad load /opt/intel/openvino/opencv/lib/libopencv_videoio_gstreamer.so => OK
[ INFO:0] global ../opencv/modules/videoio/src/backend_plugin.cpp (236) PluginBackend Video I/O: loaded plugin 'GStreamer OpenCV Video I/O plugin'
[ INFO:0] global ../opencv/modules/videoio/src/cap_gstreamer.cpp (711) open OpenCV | GStreamer: http://192.168.137.160:4747/video
[ INFO:0] global ../opencv/modules/videoio/src/cap_gstreamer.cpp (744) open OpenCV | GStreamer: mode - URI
该程序似乎卡在那里。不会抛出异常。
解决方案
问题可能是因为没有安装 FFmpeg 或者您的 FFmpeg 版本与 OpenCV 不兼容。这是在 Raspberry Pi 上安装 FFmpeg的指南。
GStreamer 是一个复杂的框架,包含数十个插件,用于构建复杂的视频处理管道。在您的情况下,通过 V4L2 接口执行的 MJPEG 解码似乎有问题,这可能是由于缺少驱动程序或软件包或配置问题引起的。看看这个类似的问题:https ://www.raspberrypi.org/forums/viewtopic.php?t=249377 。
推荐阅读
- bash - 结合正则表达式 awk 和 bc
- jquery - 查找并收集所有具有 `data-id` 属性的元素的值
- git - 使用子模块跟踪分支是否可以保护您免受强制推送?
- javascript - 如何将贝塞尔曲线插入画布上的打开图像中?
- assembly - 为什么需要 ESP 寄存器中的 8 字节增量?
- c# - AutoCAD 关联框架 GetEdgeVertexSubentities() 致命错误
- rpy2 - 使用 rpy2 从 FloatVector 中减去 FloatVector
- java - 如何在不创建接口的情况下在java中模拟类
- css - 仅顶部的边框图像,没有切片?
- sql - 如何从 SQL Server 中的表中获取不匹配的数据