特徴点検出クラス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);