首先,我可以使用OpenCV API findChessboardCorners 和 cornerSubPix 来查找棋盘图案上的角落,如下所示:
但是我想提高角落定位的准确性,并且我了解到SIFT具有最高的精度。所以,我想用这样的代码尝试SIFT:
Mat img = imread("chess.jpg", 0);
if (img.cols > 800) {
resize(img, img, Size(800, (int)(800.0 / img.cols * img.rows)));
}
vector<KeyPoint> keypoints;
Ptr<xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
sift->detect(img, keypoints);
Mat feature;
cv::drawKeypoints(img, keypoints, feature, Scalar(0, 0, 255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow("feature", feature);
那么,有人能告诉我使用SIFT的正确方法吗?任何信息都是预期的。谢谢!