2011年5月11日水曜日

PCA in OpenCV

使い方

using namespace cv;

PCA pca(const Mat& data, const Mat& mean, int flags, int maxComponents=0)
となってる。

入力はその通りで、
data:多次元のデータ。
flag:普段の計算はサンプルを列にしているので、CV_PCA_DATA_AS_COLSを指定
   (サンプルを行に格納するときは、CV_PCA_DATA_AS_ROWS)。
mean:データから計算してほしいから、Mat()を入力。
maxComponents:必要な次元数を指定する。0は、データの次元数のままで計算される。




入力すれば計算してくれて、結果は以下の変数で取得できる。


pca.eigenvectors:固有ベクトル
pca.eigenvalues:固有値
pca.mean:平均値


他にコピーしたければ、
pca.eigenvectors.copyTo(Mat &mat)
Mat eigenvalues = pca.eigenvalues.clone()
とか使って。


中身は、
pca.mean.at<double>(0,0)などで見られる。

Micron Tracker2

3つ目の光学式三次元位置計測装置。

デバイスマネージャで認識されている状態で。

PCを起動させてそのままプログラムを動かそうとすると、通信できない。
分かったことは、初期状態で、データ形式と転送速度が指定されてないため。
そこで、Point GreyのサンプルプログラムFlyCap.exeで形式と速度を指定すると、使えるようになる。

2011年5月4日水曜日

Boost1.46.1のコンパイル

bjamを使って、Boost 1.44の64bit用のコンパイルはできたけど、Windows XP 32bitでBoost1.46.1のコンパイルができない。
使ったbjamは、ダウンロードのページにリンクがあるboost-jam-3.1.18-1-ntx86.zip
"UPDATE_NOW …"とかwarningがでてくるけど、よく分からず。
windows用のインストーラでインストールしようとしたけど、ライブラリができなくて、??

もうちょっと調べてみたら、
boost_1_46_1/bootstrap.bat
で作成したbjamじゃないといけないんだとか(.batファイルをダブルクリックすればできた)。
参考: http://cosmo0920.wordpress.com/2010/12/06/boost-1-45-0-%E3%82%92bjam%E3%83%93%E3%83%AB%E3%83%89/

それで、コンパイルはできたけど、link=static runtime-link=sharedでは、.libファイルしか生成されなかった。
link=sharedにしたら、.libと.dllがboost_1_46_1/stage(デフォルトの出力フォルダ)に生成された。

>bjam --toolset=msvc-9.0 link=shared --without-regex --without-python --without-mpi


参考
http://blog.goo.ne.jp/anoydevl/e/cd1c8447740f996dd9d8d7e753cb02eb