【问题标题】:Compile OpenCV + Gstreamer for others为其他人编译 OpenCV + Gstreamer
【发布时间】:2021-03-02 04:30:38
【问题描述】:

我创建了一个使用 OpenCV 和 Gstreamer(接收 udp 流)的项目,如果使用 Visual Studio(运行按钮)打开,它工作得非常好。但是在编译 Release x64 MT 并尝试之后,我不仅需要抛出大量 GStreamer .dll 文件来打开我的应用程序,而且即使在它成功打开后,当它打开流时我也会收到警告,因此我的程序是不工作(捕获返回 false)

[ WARN:0] global F:\Code\opencv_4.5.1\opencv-4.5.1\modules\videoio\src\cap_gstreamer.cpp (734) cv::GStreamerCapture::open OpenCV | GStreamer warning: Error opening bin: no element "udpsrc"
[ WARN:0] global F:\Code\opencv_4.5.1\opencv-4.5.1\modules\videoio\src\cap_gstreamer.cpp (501) cv::GStreamerCapture::isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

它似乎找不到什么东西。我的问题是:

如何编译我的项目,以便任何其他 Windows 计算机都可以打开它并找到所有需要的文件? (隐藏 .dll 的奖励积分)

谢谢

【问题讨论】:

  • 不是错误而是警告
  • 没错,但它阻止了我的应用程序工作,例如,当我使用 VLC 时,它成功打开了我的流,所以这不是网络问题。而且我仍然想知道为什么它试图从我的主 PC 搜索路径中的东西?
  • 这似乎是“H:\gstreamer\1.0\x86_64\bin”的路径导致该问题如果我允许我的程序使用 PATH 并且它在那里 - 它正在工作,但是当我删除它时只需将文件从那里复制粘贴到我的程序目录,我就会收到“警告”。如何以其他方式链接这些文件以使其正常工作?

标签: c++ opencv gstreamer


【解决方案1】:

好的,我发现,出于某种原因,您需要将 .dll 文件从 GStreamer /bin 文件夹移动到您的应用程序主目录,并在上一个文件夹中复制 GStreamer /lib 文件夹

/MyFolder
   /my app
       /*.dll
       /myapp.exe
   /lib

*.dll-s 来自“ \gstreamer\1.0\x86_64\bin ” /lib 来自“\gstreamer\1.0\x86_64”

一大堆文件,它破坏了我的目录组织,但它终于可以工作了 - 我有人发现了如何修复/改进它,请告诉我:wink:

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 2011-05-18
    • 2010-10-05
    • 2017-05-30
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多