OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。
2012年10月18日木曜日
Windows7 64bit版にOpenCV 2.4.2の開発環境を構築した
Visual C++ 2010 Expressは、64bitのプロジェクトを作成できないので、OpenCVの32bit版を使用し、32bitのプロジェクトを作成するのであれば、以前のWindows7 32bit版の構築方法と同じ手順でできる
Visual C++ 2010 Express へのパスの設定含めて1時間もかからない
2012年10月16日火曜日
OpenCVでオリジナルと処理結果をあわせて保存する
OpenCVの処理がどのようなものであるかわかりやすくするために、オリジナルの画像と処理画像を水平方向に連結してファイルに出力する
連結は、
cv::hconcat(matOrg, matRes, matOut);
で水平方向画像を作成し、横サイズ2倍でopenしたVideoWriteに出力すればよい
ただし、matOrgとmatResのフォーマットは同じにしないとOpenCVが落ちる
2012年10月15日月曜日
OpenCV NativeViewerのインストールを試みた
NativeViewerは、OpenCVのMat変数の中身をデバッグ中に画像として表示できる拡張機能であるということを知ったので早速インストールを試みたが残念ながら
Visual Studio 2010のみしかサポートされていない。
ExpressEditionの拡張機能マネージャからオンラインでインストールできるのではないかと、考えたが残念ながら検索には引っかからなかった。(右上の検索窓を使用)
NativeViewer_v0.12.vsixをダウンロードしても、サポートされていないとのメッセージが表示されだめである。
今後サポートされることを期待しよう。
11/22 追記
11月10日にVer1.0がリリースされている。ここからダウンロード
2012年10月10日水曜日
OpenCV用にコモンコントロールのTextBoxに入力された文字列を数字として取得する
OpenCVでGUIから閾値を指定した場合がある。
その場合、GUIのTextBoxの文字列をfloat等に変換する必要がある。
TextBoxの型は、system::stringであり、これをstd::stringに変換する場合は、若干手間が必要であった。
一方、floatへの変換は、下記の方法でできる。
float f = float::Parse(this->textBox1->Text);
本来は、数字以外の入力がエラーになるためtry catchなどのエラー処理が必要であるが、自分用なので手を抜いている。
2012年10月2日火曜日
PlayStation Eyeのドライバーがエラーメッセージを表示した
PlayStation Eyeのカメラ画像を記録しようと自作アプリを起動したところ、下記の画面が表示され一瞬壊れたのかとあせった。
原因は、USBケーブルをPCにつないでいないだけだった。ケーブルをさしてアプリを立ち上げたところ無事カメラ画像が表示された。
しかし、USBケーブルをさしていないのにドライバーが動いているようで不気味である。
原因は、USBケーブルをPCにつないでいないだけだった。ケーブルをさしてアプリを立ち上げたところ無事カメラ画像が表示された。
しかし、USBケーブルをさしていないのにドライバーが動いているようで不気味である。
2012 CEATECでの画像認識関連をまとめてみた
本日から6日まで幕張でCEATECが開催されている
数は少ないが、インターネットのニュースから画像認識関連をまとめてみた
トヨタが「CEATEC」に初出展、超小型EV「Smart INSECT」を披露
http://monoist.atmarkit.co.jp/mn/articles/1209/28/news024.html
ドコモ 視線で操作できるタブレット「ibeam」に注目
http://news.mynavi.jp/articles/2012/10/01/ceatec01/
富士通 小型カメラとLEDを用いたPCに内蔵可能な視線検出技術
http://pr.fujitsu.com/jp/news/2012/10/2-1.html
STANLEYでジェスチャーコントロールを体験してきた
http://www.gizmodo.jp/2012/10/_ceatec_stanley.html
2012年10月1日月曜日
OpenCVでVGAサイズの画像を30fpsで2枚リアルタイムに表示する
カメラからの入力画像と処理結果の画像の2枚を、VGAサイズでリアルタイム(30fps)に表示しようと試みたが、なぜか片方の表示がたまにつまった状態になった
オリジナルプログラムの抜粋
while(true) {
cap >> mat;
cv::imshow("org,mat);
cv::Mat res = hoge(mat);
cv::imshow("hoge",res);
cv::waitKey(10);
}
CPUの負荷は25%ぐらいで余裕のはずである。
いくつか要因を考え試行錯誤を試みた結果、
cv::waitKey(30);
に変更することで表示されるようになったと思われる。
30は、暫定値であり、下記に示すように本来まじめに考える必要がある。
どうやらwaitKeyの時間で、フレームバッファに書き込みをしており、この時間が短いためつまった状態(こま落ちした)になったと推測される。
30fpsを確保するには、1フレームの処理時間(while内の処理)を33msec内にする必要がある。
理想は、画像処理の時間+waitKey = 33msecであるが、この値が小さくても、OpenCVのカメラ入力処理で30fpsに調整されるため表示がおかしくなることはなさそうである
一方大きい場合は、たとえば、waitKey(500)で試してみると、極端なこま落ち状態になった。
以上
登録:
投稿 (Atom)

