我试图按照OpenCV教程,找到here。本教程的一部分是创建SURF特征检测器。
与教程不同,我的代码位于头文件中,如下所示:
class Img {
Mat mat;
int minHessian = 400;
SurfFeatureDetector detector(minHessian);
public:
...
}
我在线上发生的错误
SurfFeatureDetector detector(minHessian);
,错误是:
Unknown type name 'minHessian'
当我不把它放在一个单独的类中时,编译器不会抱怨。我也检查过,我已经导入了所需的库。
有人能告诉我错误是什么,以及如何解决?
答案 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
函数
因此,我认为如果您从头文件代码中删除它,并将其放在您想要调用它的函数中,它可能会起作用。