python - Opencv 在我的笔记本电脑上为我的项目工作,但停止在树莓派上工作

标签 python opencv ffmpeg gstreamer openvino

大家早上好!我绝望(这是我的第一篇文章)。
我正在尝试使用 openvino 工具包设置人体检测系统。我在以下 openvino multi target tracking 使用 openvino 提供的示例项目.我首先在我的计算机(ubuntu)上测试了它们并且它有效。我现在尝试在树莓派上运行该项目,但它卡在了 opencv 级别。我按照以下教程 Install openvino on rasbian用于设置 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 不兼容。这是 install FFmpeg on Raspberry Pi 的指南.
GStreamer 是一个复杂的框架,包含数十个插件,用于构建复杂的视频处理管道。在您的情况下,通过 V4L2 接口(interface)执行的 MJPEG 解码似乎有问题,这可能是由于缺少驱动程序或软件包或配置问题引起的。看看这个类似的问题:https://www.raspberrypi.org/forums/viewtopic.php?t=249377 .

关于python - Opencv 在我的笔记本电脑上为我的项目工作,但停止在树莓派上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66521598/

相关文章:

php - FFMPEG 在命令行中工作,但不能在 exec() 中工作,它返回 127

php - 从本地系统上传后将视频转换为 .mp4 格式不显示视频只听到声音

python - 如何使用分隔符将csv文件分割成多个文件? Python

python - 如何从多个列表制作字典?

opencv-使用光流的车辆跟踪

android - 将动画覆盖添加到来自相机的视频

python - 在python中每次迭代时分别获取函数的日志

python - 如何从类变量引用静态方法

Java程序Opencv unsatisfiedlinkerror

opencv - 如何根据肤色猜人种