我在 Objective-C 中使用 OpenCV 库(交叉编译),它基本上可以正常工作。
不幸的是,当使用可以在find_obj.cpp中找到的示例时,我得到 CvSURFParams 的奇怪值,这些值必须作为参数传递给cvExtractSURF函数。
features2d.hpp(openCV的一部分):
typedef struct CvSURFParams
{
int extended;
double hessianThreshold;
int nOctaves;
int nOctaveLayers;
} CvSURFParams;
surf.cpp(openCV 的一部分):
CvSURFParams cvSURFParams(double threshold, int extended)
{
CvSURFParams params;
params.hessianThreshold = threshold;
params.extended = extended;
params.upright = 0;
params.nOctaves = 4;
params.nOctaveLayers = 2;
return params;
}
ViewController.mm(我的主视图控制器):
CvSURFParams params = cvSURFParams(500, 1);
调用ViewController.mm中的 cvSURFParams 函数后,params 的值为:
extended = (int) 1
hessianThreshold = (double) 0
nOctaves = (int) 1082081280
nOctaveLayers = (int) 4
在ViewController.mm中更正hessianThreshold、nOctaves、 ..的值并没有帮助,只要我将参数传递给我的cvExtractSURF函数,在surf.cpp中调试此函数时就会出现错误的值:
extended = (int) 1
upright = (int) 0
hessianThreshold = (double) 500
nOctaves = (int) 4
nOctaveLayers = (int) 0
有人可以帮忙吗?
提前致谢,
——斯蒂芬