C++ 中的 OpenCV:“未知类型名称”

Posted

技术标签:

【中文标题】C++ 中的 OpenCV:“未知类型名称”【英文标题】:OpenCV in C++: "Unknown Type Name" 【发布时间】:2015-09-28 03:05:59 【问题描述】:

我正在尝试遵循 OpenCV 教程,发现 here。本教程的一部分是创建一个 SURF 特征检测器。

与教程不同,我的代码在头文件中,如下所示:

class Img 
    Mat mat;
    int minHessian = 400;
    SurfFeatureDetector detector(minHessian);

    public:
        ...

我得到的错误发生在线路上

SurfFeatureDetector detector(minHessian);

错误是:

Unknown type name 'minHessian'

当我不把它放在一个单独的类中时,编译器不会抱怨。我也检查过并导入了所需的库。

谁能告诉我错误是什么,以及如何解决它?

【问题讨论】:

【参考方案1】:

我看了opencv教程代码:

Mat img1 = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
Mat img2 = imread(argv[2], CV_LOAD_IMAGE_GRAYSCALE);
if(img1.empty() || img2.empty())

    printf("Can't read one of the images\n");
    return -1;


// detecting keypoints
SurfFeatureDetector detector(400);
vector<KeyPoint> keypoints1, keypoints2;
detector.detect(img1, keypoints1);
detector.detect(img2, keypoints2);
....

据我了解,在此代码中,SurfFeatureDetector detector(minHessian); 不是您可以像以前那样在头文件中编写的函数的签名;但它实际上是在代码中调用SurfFeatureDetector 函数。 所以,我认为如果你从你的头文件代码中删除它,并将它放在你想要调用它的函数中,它可能会起作用。

【讨论】:

以上是关于C++ 中的 OpenCV:“未知类型名称”的主要内容,如果未能解决你的问题,请参考以下文章

操作系统的 Mach 库中的未知类型名称错误

使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t

React Native 0.60 升级:未知类型名称“MutexType”

使用 C++ 在 OpenCV 中的矩阵中的多维数据

Borland C++ 2009 中的 OpenCV

从 OpenCV(C++)中的目录读取多个图像