如何确定OpenCV版本

29

如何确定我安装了哪个版本的OpenCV?

我最感兴趣的是以编程的方式(并且跨平台)进行操作,但我甚至找不到一种从代码之外确定已安装版本的方法。

我正在Fedora上使用C++03。


如何在C语言中实现? - Adam
9个回答

40
您可以检查CV_VERSION宏。

5
CV_VERSION 宏定义在哪个头文件中? - Ray
2
@Ray opencv2/core/version.hpp - undefined
1
@Ray opencv2/core/version.hpp - Ruh Roh Raggy

20

如果您想获取构建信息,可以使用此代码:

    printf("OpenCV: %s", cv::getBuildInformation().c_str());

19

您可以检查以下宏变量:

CV_MAJOR_VERSION
CV_MINOR_VERSION

14

这是我目前找到的唯一检查源代码版本的方法。 - Cagan Arslan

4
我希望您可以使用version.hpp定义来增强其中一个答案。
请注意该解决方案可能存在的问题:
v.2.4.13.6 定义如下:
#define CV_VERSION_EPOCH 2
#define CV_VERSION_MAJOR 4
#define CV_VERSION_MINOR 13
#define CV_VERSION_REVISION 6
#if CV_VERSION_REVISION
#  define CV_VERSION    CVAUX_STR(CV_VERSION_EPOCH) "." CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION)
#else
#  define CV_VERSION        CVAUX_STR(CV_VERSION_EPOCH) "." CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR)
#endif

版本3.4.2中定义了and:

#define CV_VERSION_MAJOR 3
#define CV_VERSION_MINOR 4
#define CV_VERSION_REVISION 2
#define CV_VERSION    CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) CV_VERSION_STATUS

因此,CV_VERSION_MAJOR 不可比较。更安全的解决方案是解析 CV_VERSION 并使用第一个 dot 之前的值。

3

pkg-config --modversion opencv


1
如果您从svn存储库安装,则可以看到确切的修订版本,如下所示:
# in the opencv.svn directory
svn info

0

如果你正在Windows下工作,并且需要配置Codeblocks或其他IDE(因此,你还无法发出任何命令或编译程序),那么你可以简单地进入OpenCV安装文件夹,然后在子文件夹“/lib”中查找库文件的最后几个字母。所有的库都以反映了OpenCV构建的主版本、次版本和修订版本的模式进行命名。例如,如果你遇到一个名为opencv_ts300.libopencv_world300.lib的文件,则主版本是3,次版本是0,修订版本是0。

(注意:这种方法可能会失败,当这些信息与实际版本不符合时,这可能是由于修订版本但不大可能是由于主版本)


0
据我所知,主要有三种方法:
  • 通过 C++ 代码进行确定:-
    将以下行放入您的代码中:
   std::cout << cv::getVersionMajor() << std::endl;
   std::cout << cv::getVersionMinor() << std::endl;
   std::cout << cv::getVersionRevision() << std::endl;

所有这些函数都具有 int 返回类型。在我的 Linux 机器上,我获得了:

4
2
0

然而,我更喜欢getVersionString(),因为它只需一个函数调用即可打印所有内容,并且它具有std::string返回类型:

   std::cout << cv::getVersionString() << std::endl;  // 4.2.0
  • 使用由OpenCV提供的opencv_version二进制文件进行确定:-
    例如,在Linux机器上,转到OpenCV bin目录,即大多数情况下是/usr/local/bin,然后运行
./opencv_version

在我的 Linux 机器上,它显示为 4.2.0

  • 通过 version.hpp 文件确定:
    OpenCV 通过三个宏 CV_VERSION_MAJORCV_VERSION_MINORCV_VERSION_REVISIONversion.hpp 头文件中指定版本。
    例如,在 Linux 机器上,进入 OpenCVinclude 目录,即大多数情况下是 /usr/local/include,并阅读 version.hpp 文件:
$ cd /usr/local/include/opencv4/opencv2/core
$ head version.hpp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接