如何使用SIFT算法找到棋盘图案的角落?

时间:2017-12-17 13:19:03

标签: opencv sift

首先,我可以使用OpenCV API findChessboardCorners cornerSubPix 来查找棋盘图案上的角落,如下所示: enter image description here

但是我想提高角落定位的准确性,并且我了解到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);

但结果不符合我的期望。结果是这样的: enter image description here

那么,有人能告诉我使用SIFT的正确方法吗?任何信息都是预期的。谢谢!

0 个答案:

没有答案