我可以使用哪个宏定义来检查我的OpenCV库是否支持cv::imshow接口?

我可以使用哪个宏定义来检查我的OpenCV库是否支持cv::imshow接口?,opencv,Opencv,有时,编译的OpenCV库不包含Highgui模块,因此无法使用imshow,哪个宏定义可以检查这一点?我可以这样使用它: #ifdef XXX // the lib support image show cv::imshow("xxx", mat); #else // do nothing #endif OpenCV并没有正式提供对“功能宏”的支持,所以您所要求的并不是一种健壮、可移植或经得起未来考验的OpenCV使用方法 您可以检查它,但是,在将来的版本中,这可能会被重命名或删

有时,编译的OpenCV库不包含Highgui模块,因此无法使用imshow,哪个宏定义可以检查这一点?我可以这样使用它:

#ifdef XXX
  // the lib support image show
  cv::imshow("xxx", mat);
#else
  // do nothing
#endif

OpenCV并没有正式提供对“功能宏”的支持,所以您所要求的并不是一种健壮、可移植或经得起未来考验的OpenCV使用方法

您可以检查它,但是,在将来的版本中,这可能会被重命名或删除,特别是如果OpenCV采用C++20模块

在任何情况下,都不鼓励使用宏和预处理器指令。更好的方法是保留一些用户指定的编译时或运行时布尔标志,以确定是否发出显示调用或设计API,以便在实际(库)代码之外进行显示调用,而实际(库)代码完全不依赖于highgui。

buildsystem将具有反映。相关的似乎是
HAVE_QT
HAVE_WIN32UI
HAVE_cococoa
HAVE_GTK——如果至少定义了一个,则应该有一个具有highgui后端的构建。你必须测试它并做你的研究,没有保证。