今のところLionだからという感じの問題に遭遇していないので、タイトルが釣りっぽいなーと思ったりしながらの3日目です。
ということで今日は前回の続きということで、固まっている原因はどこか、ソースコードを確認していきたいと思います。
ということで、無事動くまでの経緯を…。
なぜかNetBeansのデバッガが使えなかったので
すると、HandRegion.cppのloadSkinColorProbTable()ってところがどうも怪しいのでよーく確認すると、
51行目〜
この部分で止まっているようです。
ということでMakeLookUpTable()を探してみると、MixGaussian.cppにあったので、中を覗くと…、
118行目〜
3重ループかー…
どうもここの計算に時間を取られていたようです。
しかもprintf(".")って、改行コード出してないからインジケータとしての意味が無いですし…。
そんな訳で、インジケータをわかりやすく(R=20ごとに改行)変更したところ、無事に動いていることが確認でき…、
てない…orz
コードを確認すると、上の処理の直後にnonskin.mgmというファイルを読んでいるのですが、追加されてませんでした。
なので、nonskin.mgmファイルを追加した後、改めて実行。
そして待つことしばし…
動いた!!!(・∀・)
なので、実行時に -flip を渡して再度実行…、
ktkr!!!
ということで、ひとまずMacでも動くことが確認できたので、次回はミクさんに登場して頂けるように頑張りましょうw
ということで今日は前回の続きということで、固まっている原因はどこか、ソースコードを確認していきたいと思います。
先に結論
とりあえず先に結論だけ書いてしまうと、固まっているように見えたのは、前処理にものすごい時間がかかってただけでしたwということで、無事動くまでの経緯を…。
困ったときのprintfデバッグ
まずはどこまで無事に動作するかを確認するため、ひたすらprintf()デバッグを敢行しました。すると、HandRegion.cppのloadSkinColorProbTable()ってところがどうも怪しいのでよーく確認すると、
51行目〜
printf("making a lookup table for skin color distribution ");
_SkinColor.MakeLookUpTable();
printf("done\n");
この部分で止まっているようです。
ということでMakeLookUpTable()を探してみると、MixGaussian.cppにあったので、中を覗くと…、
118行目〜
void MixGaussian::MakeLookUpTable()
{
CvMat * SampleMat = cvCreateMat( 3, 1, CV_64FC1 );
for ( int R = 0 ; R < 256 ; R ++ )
{
printf(".");
for ( int G = 0 ; G < 256 ; G ++ )
{
for ( int B = 0 ; B < 256 ; B ++ )
{
cvSetReal1D( SampleMat, 0, (double)R );
cvSetReal1D( SampleMat, 1, (double)G );
cvSetReal1D( SampleMat, 2, (double)B );
_Probability[R][G][B] = GetProbability( SampleMat );
}
}
}
cvReleaseMat( &SampleMat );
}
3重ループかー…
どうもここの計算に時間を取られていたようです。
しかもprintf(".")って、改行コード出してないからインジケータとしての意味が無いですし…。
そんな訳で、インジケータをわかりやすく(R=20ごとに改行)変更したところ、無事に動いていることが確認でき…、
てない…orz
コードを確認すると、上の処理の直後にnonskin.mgmというファイルを読んでいるのですが、追加されてませんでした。
なので、nonskin.mgmファイルを追加した後、改めて実行。
そして待つことしばし…
動いた!!!(・∀・)
でも上下反転してますね…(;´∀`)
付属のドキュメントを見ると、flipオプションというのがあり、
- [-filp]: flip video images vertically. (Default=don’t flip)
とのこと。
なので、実行時に -flip を渡して再度実行…、
ktkr!!!
ということで、ひとまずMacでも動くことが確認できたので、次回はミクさんに登場して頂けるように頑張りましょうw
0 件のコメント:
コメントを投稿