【发布时间】:2014-03-28 01:32:22
【问题描述】:
我问这个是因为我安装了几个,并且怀疑我是否加载了正确的动态库。
这个问题与这些问题略有不同,因为它们回答的是已安装的内容,而不是您的应用程序链接的内容:
【问题讨论】:
标签: c++ opencv shared-libraries
我问这个是因为我安装了几个,并且怀疑我是否加载了正确的动态库。
这个问题与这些问题略有不同,因为它们回答的是已安装的内容,而不是您的应用程序链接的内容:
【问题讨论】:
标签: c++ opencv shared-libraries
除了@berak 的精彩回答(与version.hpp 有关):
OpenCV 2.4 和 OpenCV 3.0 分支中有不同的命名方案。
对于 OpenCV 2.4.x 我们有这样的东西(注意对于 2.4.x CV_VERSION_MAJOR 是 4):
#define CV_VERSION_EPOCH 2
#define CV_VERSION_MAJOR 4
#define CV_VERSION_MINOR 8
#define CV_VERSION_REVISION 0
对于 OpenCV 3.0.x,我们有以下内容(注意 CV_VERSION_MAJOR 的含义已更改!):
#define CV_VERSION_MAJOR 3
#define CV_VERSION_MINOR 0
#define CV_VERSION_REVISION 0
#define CV_VERSION_STATUS "-dev"
也就是说,如果你需要同时支持 2.4.x abd 3.0.x,如果你想检查CV_VERSION_MAJOR,代码会有点不明显。
我更喜欢检查CV_VERSION_EPOCH:
#if (defined(CV_VERSION_EPOCH) && CV_VERSION_EPOCH == 2)
# OpenCV 2.4.x stuff
#else
# OpenCV 3.0 stuff
#endif
【讨论】:
核心中有一个version.hpp 标头,它定义了CV_VERSION_MAJOR 等常量。
除此之外,cout << cv::getBuildInformation() << endl; 非常有用,因为它会向您显示构建 opencv 时生成的 cmake 输出(因此您可以看到依赖关系,无论是使用 ffmpeg 还是 gstreamer 等..)
编辑:请使用 CV_MAJOR_VERSION,而不是 CV_VERSION_MAJOR,因为后者的使用在 2.4 和 master 之间是冲突的
【讨论】:
CV_MAJOR_VERSION 包含与CV_VERSION_MAJOR 相同的内容。所以不清楚为什么应该使用一个而不是另一个。
CV_VERSION_MAJOR 实际上包含 opencv 2.4 中的次要版本,CV_MAJOR_VERSION 包含所有 opencv 版本中的实际主要版本。 version.hpp 从 2.4.8 开始。
这是来自 version.hpp 的 OpenCV 2.4.8 的定义:
#define CV_VERSION_EPOCH 2
#define CV_VERSION_MAJOR 4
#define CV_VERSION_MINOR 8
#define CV_VERSION_REVISION 0
【讨论】: