当我在opencv中使用calib3d.hpp时重新定义类

redefinition of class when I use calib3d.hpp in opencv

本文关键字:新定义 定义 hpp opencv calib3d      更新时间:2023-10-16

我正在一个C++项目中开发ubuntu 16.4,我正在尝试使用opencv2/calib3d.hpp中的函数,但没有任何成功。

例如,使用 cv::P oint3d 我没有任何问题,但是一旦我添加,我就会收到以下错误:

/

usr/local/include/opencv2/features2d/features2d.hpp:69:错误: 重新定义"类 cv::KeyPoint"类CV_EXPORTS_W_SIMPLE 关键点

这是我的代码:

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/calib3d.hpp>
int main()
{
    std::cout << "cv hello"<< std::endl;
    return 0;
}

当我使用" pkg-config --modversion opencv"来使用opencv版本时,我得到"3.1.0"

我的想法是我安装了几个版本的 opencv 并且存在冲突。我在想,因为在完成的命题中,当我添加
#include,我有几个等价的calib3d.hpp命题。

怎么知道我是否安装了多个版本?

不确定这是否要付出很多努力,但您可以使用 Cmake 指定 OpenCV 版本。

find_package(OpenCV 3.2 REQUIRED PATHS "/path/to/OCV3.2/install/dir/")

看看@gabriel的答案:

https://stackoverflow.com/a/45752688/10889595