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

时间:2015-09-28 03:06:00

标签: c++ opencv xcode6

我试图按照OpenCV教程,找到here。本教程的一部分是创建SURF特征检测器。

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

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

    public:
        ...
}

我在线上发生的错误

SurfFeatureDetector detector(minHessian);

,错误是:

Unknown type name 'minHessian'

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

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

1 个答案:

答案 0 :(得分: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函数 因此,我认为如果您从头文件代码中删除它,并将其放在您想要调用它的函数中,它可能会起作用。