SiftFeatureDetector() 和 Ptr 有什么区别?它们显然具有相同的功能。opencv 教程使用 SiftFeatureDetector,但是当点击官方文档时,他们使用 Ptr 并且没有提及 SiftFeatureDetector(),所以我无法阅读它。正如他们在教程中使用的那样:int minHessian = 400; SurfFeatureDetector detector( minHessian );
而且我不知道 minHessian 应该做什么。
另外我在同一张图片上尝试了它们,它们都有相同的结果,那为什么它们不同呢?
int _tmain(int argc, _TCHAR* argv[])
{
//initModule_nonfree();
Mat img;
img = imread("c:\\box.png", 0);
//cvtColor( img, gry, CV_BGR2GRAY );
//SiftFeatureDetector detector;
//vector<KeyPoint> keypoints;
//detector.detect(img, keypoints);
Ptr<FeatureDetector> feature_detector = FeatureDetector::create("SIFT");
vector<KeyPoint> keypoints;
feature_detector->detect(img, keypoints);
Mat output;
drawKeypoints(img, keypoints, output, Scalar::all(-1));
namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", output);
waitKey(0);
return 0;
}
谢谢