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;
}
ありがとうございました