LoginSignup
10
9

More than 5 years have passed since last update.

最近のOpenCVを使ってみる

Posted at

久しく使ってなかった 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 特徴量の算出について簡単に触ってみました。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9