gpt4 book ai didi

c++ - 在 openCV 中调用 Gstreamer

转载 作者:太空狗 更新时间:2023-10-29 21:43:12 30 4
gpt4 key购买 nike

我需要在 openCV 代码中调用 Gstremaer(本质上是打开摄像机)。当我查看源代码时,modules/highgui/src/cap_gstreamer.cpp似乎是我要找的文件。

我用 Gstreamer 标志编译了 OpenCV。

 GStreamer:
-- base: YES (ver 1.2.3)
-- video: YES (ver 1.2.3)
-- app: YES (ver 1.2.3)
-- riff: YES (ver 1.2.3)
-- pbutils: YES (ver 1.2.3)

但我无法调用与 Gstreamer 相关的函数(例如 cvCreateCapture_GStreamercap_gstreamer.cpp 中定义) cap_gstreamer.cpp按照 opencv 安装日志的建议构建成功:

[ 17%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_gstreamer.cpp.o

cvCreateCapture_GStreamer也存在于内部 /usr/local/lib/libopencv_highgui.so.3.0.0构建 openCV 之后(发现使用 grep )

我使用 #include <opencv/highgui.h>但调用cvCreateCapture_GStreamer失败(-lopencv_highgui 标志在 Makefile 中设置):

error: ‘cvCapture_GStreamer’ was not declared in this scope

任何建议都会有所帮助,不胜感激。

谢谢!

最佳答案

实际上,您不能通过 OpenCV 使用 GStreamer API。 OpenCV 拥有一系列包装函数(例如,cvCaptureFromCam),它们通过外部多媒体库实现其功能。例如,除了 GStreamer,OpenCV 可能会使用其他库,例如 ffmpeg、v4l.. 事实上,如果您通过不同的外部库检查与多媒体捕获相关的文件的完整列表,您会发现:

(in opencv/modules/highgui/src)
cap_cmu.cpp
cap_dc1394.cpp
cap_ffmpeg.cpp
cap_gstreamer.cpp
...

因此,如果您使用 GStreamer 支持编译 OpenCV,您将调用相同的 highgui 函数(如 cvCaptureFromCam),但在低级别,它将调用类似 cvCreateCapture_GStreamer 的函数> 实现对 GStreamer API 的调用。但这并不意味着您可以将自己调用到那些低级函数(因此出现“未在此范围内声明”错误)。

希望对您有所帮助!

编辑:看看 cap.cpp opencv 源文件中的文件。请注意 CvCreateCameraCapture_XXX 的不同选项。这让我觉得您应该能够在没有某些依赖项的情况下打开相机(通过使用其他依赖项)。

关于c++ - 在 openCV 中调用 Gstreamer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501553/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com