久しく使ってなかった OpenCV を Windows 環境で使ってみるテスト。
特に Algorithm 関連で以前から使い方が変っているため、
ORB によるキーポイント導出を例にコードを書いてみる。
SDK のインストール
OpenCV から Windows 用の
SDK をダウンロード。今回は D:\SDK\opencv に解凍しました。
他に必要な物
- コンパイラ (今回は Visual Studio を使用)
- CMake
CMakeLists.txt を記述
VC の sln を生成するために CMakeLists.txt を記述します。
linux だと大抵 apt-get やら yum やら pacman やらでインストールできます。
また OpenCV_DIR の設定も不必要かもしれません。
cmake_minimum_required(VERSION 2.8)
project(opencv_test)
# OpenCV のルートディレクトリをセット
set(OpenCV_DIR "D:/sdk/opencv/opencv/build")
find_package(OpenCV REQUIRED)
if( OpenCV_FOUND)
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( opencv_test main.cpp )
target_link_libraries( opencv_test ${OpenCV_LIBS} )
endif()
コードの記述
簡単に ORB 特徴量を算出するコードは以下のように。確か ver 2.3 より前は
cv::OrbFeatureDetector
やら cv::OrbDescriptorExtractor
など
各アルゴリズム毎にクラスが乱立してたように覚えているのですが、最近は
ベースとなる Algorithm クラスのスーパークラスとして実装されているようです。
特にググってすぐ出てくるようなページを参考にするとクラスが無いとかで
怒られます(←経験済み
#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
int main(int argc, char** argv){
// 画像の読み込み
cv::Mat img = cv::imread("lena_std.tif", 0);
// ORB 特徴量の検出器をインスタンス化
auto detector = cv::ORB::create();
// ORB キーポイントの検出
std::vector<cv::KeyPoint> orbkeys;
detector->detect(img, orbkeys);
// 各キーポイントの評価値を算出
cv::Mat descriptors;
detector->compute(img, orbkeys, descriptors);
return 0;
}
まとめ
最近の OpenCV を使った ORB 特徴量の算出について簡単に触ってみました。