特徴点検出クラスcv::FASTの落とし穴発見。 カラー画像を入力しても実行時エラーもでず、 間違った位置の特徴点が返ってくる。 ただし、マニュアルには入力はgray imageと書かれているのでバグではない。
入力画像例
グレースケール画像を入力した場合
cv::Mat_<cv::Vec3b> color = cv::imread("im0.png");
cv::Mat gray, features;
std::vector<cv::KeyPoint> keypoints;
cv::FAST(gray, keypoints, 10.0);
cv::drawKeypoints(gray, keypoints, features);
cv::imwrite("features_gray.png", features);
カラー画像を入力した場合
cv::Mat_<cv::Vec3b> color = cv::imread("im0.png");
cv::Mat gray, features;
std::vector<cv::KeyPoint> keypoints;
cv::FAST(color, keypoints, 10.0);
cv::drawKeypoints(gray, keypoints, features);
cv::imwrite("features_gray.png", features);