首页 > 解决方案 > 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

该程序似乎卡在那里。不会抛出异常。

标签: pythonopencvffmpeggstreameropenvino

解决方案


问题可能是因为没有安装 FFmpeg 或者您的 FFmpeg 版本与 OpenCV 不兼容。这是在 Raspberry Pi 上安装 FFmpeg的指南。

GStreamer 是一个复杂的框架,包含数十个插件,用于构建复杂的视频处理管道。在您的情况下,通过 V4L2 接口执行的 MJPEG 解码似乎有问题,这可能是由于缺少驱动程序或软件包或配置问题引起的。看看这个类似的问题:https ://www.raspberrypi.org/forums/viewtopic.php?t=249377 。


推荐阅读