OpenCV 3.0.0-alphaで特徴点検出 c++11

前回SURFを無事有効化できたので,特徴点検出をしてみた.
c++11のコードを貼っておく.

#include <opencv2/opencv.hpp>
int main(){
        cv::VideoCapture cam(0);
        // 特徴量を選ぶ
        auto featureDetector = cv::FeatureDetector::create(SURF);
        //auto featureDetector = cv::FeatureDetector::create(ORB);
        //auto featureDetector = cv::FeatureDetector::create(BRISK);
        //auto featureDetector = cv::FeatureDetector::create(SIFT);
        std::cout << featureDetector->name() << std::endl;
//      auto descriptorExtractor = cv::DescriptorExtractor::create(SURF);
        while(true){
                cv::Mat img;
                cv::Mat gimg;
                cv::Mat result;
                std::vector<cv::KeyPoint> keypoints;
                std::vector<float> descriptors;
                cam >> img;
                if(img.empty()) break;
                // グレースケール化
                cv::cvtColor(img, gimg, cv::COLOR_BGR2GRAY);
                // 特徴点検出
                featureDetector->detect(gimg, keypoints, cv::Mat());
//              // 特徴量を抽出
//              descriptorExtractor->compute(gimg, keypoints, descriptors);
                // 特徴点の描画
                cv::drawKeypoints(img, keypoints, result);
                char key = cv::waitKey(1);
                cv::imshow(img, img);
                cv::imshow(gimg, gimg);
                cv::imshow(keypoints, result);
                if(key == 'q') break;
        }
        return 0;
}

コンパイルするときは,

g++ -std=c++11 -o detect sample.cpp `pkg-config --cflags --libs opencv`

コメントする