0

我需要类似的东西

find_package( OpenCV REQUIRED )

if(OpenCV_WITH_GSTREAMER)
   message("has gstreamer")
   add_executable(stream src/main.cpp)
else()
   message("no gstreamer")
endif()

如果 OpenCV 有 GStreamer,则编译某些二进制文件。有没有像我可以在 CMakeLists 中读取的变量?对替代解决方案持开放态度。

4

1 回答 1

0

我认为通过检查 OpenCV 分发包中的 cmake 文件是不可能的。然而,模块中的 OpenCVvideoio提供了指定VideoCapture API backend的可能性。您可以依靠这一事实,例如编写一个小程序,该程序将创建一个将值作为构造函数参数cv::VideoCapture传递的对象,然后根据方法的结果检查 OpenCV 是否在支持 gstreamer 的情况下编译。您可以从您的 cmake 文件中运行这样的小型应用程序,并根据其结果决定是否编译这些特定的二进制文件。为了简单起见,我会考虑用 python 编写那个小应用程序。CAP_GSTREAMERapiPreferencecv::VideoCapture::isOpened()

于 2022-01-14T16:08:52.783 回答