2013年3月6日水曜日

OpenCVのFileStrageではまってしまった


プログラムの変数に設定しようと、各種設定データを.ymlに保存し、FileStrageに読み込もうとした。
ここで、あることにはまったので忘れないようにメモ

症状

パラメータ識別用に文字情報を入れ、起動時にコンソールに表示するために

cv::FileStorage fs(INI_FILE, cv::FileStorage::READ);
if (fs.isOpened()) {
fs["message"] >> s;

のようなコードを書き、ymr内に

%YAML:1.0
message: 25% scale

と書いていたが、プログラムを実行すると、

cv::FileStorage fs(INI_FILE, cv::FileStorage::READ);

で落ちる

最初のパスの問題かと思ったが何度見直しても問題がないので、試行錯誤の結果、原因がわかるまでに非常に時間を要した


原因
YAML内の要素に、数字文字の順の並びを記載すると落ちる

対策
YAML内の要素に、文字数字の順の並び変更

OpenCV 2.4.4の笑顔検出を試してみた


2.4.4からsmile検出用の辞書 haarcascade_smile.xml が追加されたので試してみた。
場所は、他の辞書と同じく data\haarcascadesに含まれている。

どのように検知されるか不明であったが、検出された結果は、口の周りの領域を示している
笑っていなくても検出されてしまうし、背景を検出する場合もあった。


仕様が気になったのしらべてみた。

アナウンスのリンクは、closed requestsのtopページを示しており、他のissueにより内容が一致しないというバグがある
調べてみると、このissueが該当していると思われる。

サンプルプログラムは、sample\c\smiledetect.cppに提供されているとのことなので、ソースを覗いてみると、
string cascadeName = "../../data/haarcascades/haarcascade_frontalface_alt.xml";
string nestedCascadeName = "../../data/haarcascades/haarcascade_smile.xml";

と定義されており、一旦顔を検出する必要がありそうだ

2.4.4からC++に切り替えるはずだが、ソースは、いまだにcのAPIを使用している。

後でC++に書き換えて試してみる

2013年3月5日火曜日

OpenCV 2.4.4のサンプルコードを調べてみた


2.4.4のsampleのcppを2.4.3のものと比較してみた

変更されたもの
bagofwords_classification.cpp ローカル変数の初期化
calibration.cpp includeファイルの追加
descriptor_extractor_matcher.cpp 内部変数のコンソールへの出力
videostab.cpp コンパイル条件の追加、ローカル変数の初期化

削除
point_cloud.cpp

追加
tvl1_optical_flow.cpp



また、tutorial_codeをざっと見てみたが、プログラムの表記方法の変更が多い

例えば *5 を /2 に int を size_tに while(true) を for (;;)になど

2013年3月4日月曜日

Windows7 64bit版にOpenCV 2.4.4の開発環境を構築した


検索などでこのページを訪れる人が、数は少ないけど、コンスタントにいる。
ちょうどこの上にあるG+1のボタンを押してもらうと、Goolgeの検索に見つかりやすくなるので、ご協力いただきたい。

最新の2.4.6の記事 (7/9 追加)
Windows7 64bit版にOpenCV 2.4.6の開発環境を構築した

今回からVisual Studio 2012がサポートされるようになったが、以下は、Windows7 64bit版上で、Visual Studio 2010 Express Editionでプログラムを開発するためののものである
(Windows7 32bit版でも同じ手順でできる)


1 ここからWindows版をダウンロードする
  Windows用のファイル OpenCV-2.4.4.exe のサイズは、前回の 251M から 259M に増えている

2 OpenCV-2.4.4.exeを実行しインストールディレクトリc:\を指定する
  展開後のファイルサイズは、2703Mである。

3 展開後、ディレクトリ名をopencvからopencv244に変更する

4 OSの環境変数の設定(要管理者権限)
  コントロールパネル、システムとセキュリティ、システムを開き
  システムの詳細設定の環境変数ボタンを押し
  システム環境変数のPathの編集
  末尾に";C:\opencv244\build\x86\vc10\bin"を追加
 (この作業後、一度ログオフし、再度ログインする)

5 Visual C++ 2010 Expressのパスの設定を行う
 この記事を参考
 ただし、各パスは、C:\opencv244\build\includeと、C:\opencv244\build\x86\vc10\libに変更する

6 手持ちのサンプルをビルドし動作確認する

以上の作業は30分もかからない。


参考 古いバージョンの記事

Windows7 64bit版にOpenCV 2.4.3の開発環境を構築した

Windows7 32bit版にOpenCV 2.4.2の開発環境を構築した

OpenCV の最新ロードマップ


2.4.4がリリースされたばかりであるが、早くも 2.4.5が 6/1日にリリースが予定されている
今のところ大きな変更点は紹介されておらず、バグと機能追加のみ公開されている

また、2.5.0も 6/1日にリリースが予定されており、こちらの方がメジャーアップデートと思われる。

ロードマップは、ここに公開されている

OpenCV 2.4.4がリリースされた



ベータ版がリリースされていたが、スケジュール通りの3/1に正式版がリリースされた

ここにアナウンスがされており、現時点でもっとも成熟したバージョンと紹介されている

変更点

  • desktop版Javaのサポート
  • Android版のフレームワーク、チュートリアル、サンプルの更新 詳細はここ
  • CUDA GPUモジュール内の多くの改良
  • OpenCL NVIDIA, AMD, Intel版での動作の安定
  • 2.4.3で報告された100以上のバグの修正
  • 笑顔検出器の追加とサンプル
  • OpenCV for Linux on ARM platforms向けのチュートリアルの追加

2013年3月1日金曜日

OpenCVでWebカメラを使用する


ネット通販で、ELECOM製のUCAM-DLD200BAが安く販売されていたので、実験用に複数購入した。
仕様では、YUY2形式:30fps(~640×480ピクセル)となっており、実験に使えるだろうと考えていた。
(この時点で、最大フレームレートの意味を考えていなかった。)

早試VGAで撮影し、XVIDでファイルに保存してみると、どうも動きがおかしい。FPSを計測してみると8fpsしかでていない

いろいろ調べてみると、室内の環境では照明が十分でないため、カメラ側でシャッター速度を遅くしているためとわかった。

100均でLEDライトを購入し、補助光としてみて試してみる予定