ofxCvのexamplesを実行する
ofxCvは,openFrameworksでOpenCVを使うためのofxOpenCvとは別のアドオンである.以下から,取得できる. kylemcdonald/ofxCv
ofxCV内にある「example-###」というサンプルを実行する.ここには,ソースしかないので,プロジェクトファイルは,以下のサイトを参考にして,emptyExampleから持ってくる. プロジェクト
ofxCvのヘッダーファイルを見つけられるようにProject.xcconfigのHEADER_SERARCH_PATSHSを次のように変更する.
HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) "../../../addons/ofxOpenCv/libs/opencv/include/" "../../../addons/ofxCv/libs/ofxCv/include/"
ただ,自分の環境ではなぜか上手く行かなかったため,ofXCodeMenuを用いる別の方法を使った.
この後,エラーが出まくって全く上手く行かなかったが,結局,原因はopenFrameworksのバージョンが0.8.4だったためだと判明.バージョンを0.9.0にしたらすんなりとビルドできた.
以下,各サンプルを分かる範囲で解説.
example-ar
よくわからない.
example-background
記録した背景画像との差分で二値化画像をつくる.スペースキーで背景画像を記録する.
example-bayer
ベイヤー画像をRGB画像にする. Computer Vision Advent Calendar 2013 - AkiWiki
example-blur
カメラ画像を平滑化する(ぼかす).キーボードを押すと,ガウシアンフィルタと(たぶん)ボックスフィルタを切り替えることができる.
example-calibration
キャリブレーション.ビルドはできるがエラーで上手く機能せず.
example-calibration-lcp
エラーでビルドできず.
example-coherent-lines
DOGフィルタでエッジを検出?cannyフィルタと比較している. 画像処理を始めよう ー特徴量2 SIFTー - プログラムdeタマゴ
example-contours-advanced
輪郭を抽出する.マウスのx座標で二値化するときの閾値を変更することができる.マウスをクリックすることで抽出する色を選択,色々な形を輪郭にフィットさせる.
example-contours-basic
輪郭を抽出する.マウスのx座標で二値化するときの閾値を変更することができる.
example-contours-color
輪郭を抽出する.マウスのx座標で二値化するときの閾値を変更することができる.マウスをクリックすることで抽出する色を選択,rキーでRGBモード,hキーでHSVモードに切り替えることができる.
example-contours-following
ビルドはできるが,エラーが出るため実行できず.
example-contours-quad
輪郭を抽出する.マウスのx座標で二値化するときの閾値を変更することができる.マウスをクリックすることで抽出する色を選択,任意の形の四角形を輪郭にフィットさせる.
example-contours-tracking
ビルドはできるが,エラーが出るため実行できず.
example-difference
前フレームとの差分を取得し,各色ごとに画像全体でどれくらい変化しているかを表示する.
example-difference-columns
前フレームとの差分を取得し,画像の各色ごとに各列についてどのくらい変化しているかを表示する.
example-edge
カメラ画像のエッジを検出する.右上がcannyフィルター,右下がsobelフィルター.cannyフィルターはマウス位置によってパラメータを変更することができる. エッジ検出 - Wikipedia
example-empty
空のプロジェクトファイル.
example-estimate-affine
アフィン変換する.コンソールに結果が出力される.中で何をやっているかよくわからず. アフィン変換とは - 大人になってからの再学習
example-face
顔認識する./bin/data以下にhaarcascade_frontalface_default.xmlを置く必要がある.このファイルは以下のところにある.
openFrameworks/examples/addons/opencvHaarFinderExample/bin/haarcascade_frontalface_default.xml
example-face-follow
顔認識して,目の位置にサングラスの画像を置く.haarcascade_frontalface_default.xmlが必要.
example-face-zoom
顔認識して,顔だけを切り取る.haarcascade_frontalface_default.xmlが必要.
example-flow
example-flow-distort
オプティカルフローを用いて,カメラ画像中の動きを歪ませる.
example-flow-distort-shader
motionAmplifierで,カメラ画像中の動きを歪ませる.マウス位置でパラメータを変更可能.example-flow-distortとの違いがよくわからない.
example-flow-keypoints
オプティカルフローで何かしている?
example-gesture
よくわからない.
example-homography
4つ以上の点でホモグラフィ変換する. ホモグラフィ - Shogo Computing Laboratory
example-kalman
カルマンフィルターで次のマウス位置を予測する.白い線がマウスの実際の位置,赤い線が前の時刻の情報から推定した位置,緑の線が現在観測した情報に基づき新たに推定した位置を表している. カルマンフィルター - Wikipedia
example-kalman-euler
カルマン法で角度を予測する?詳細は不明.この辺りが関係ありそう. KalmanFilter
example-smile
笑顔を認識する.haarcascade_frontalface_default.xmlとsmiled_05.xmlが必要.smiled_05.xmlは以下から.
https://github.com/hromi/SMILEsmileD/blob/master/smileD/smiled_05.xml
example-threshold
カメラ画像を二値化する.マウスのx座標で閾値を決めることができる.
example-unditortion
カメラ画像の歪みを補正する.setup()内のcalibration.setFillFrame(true)の引数をfalseに変えると,以下のような歪んでいる画像となるが,trueにすると左右でほとんど同じになる.