
Direct showでUSBカメラキャプチャーしようとしています。
現在、6台のUSBカメラを接続し、連続して撮影をしています。
問題はキャプチャーする時間が長く、640x480画素モードで1000mS、1600x1200画素モードで2000ms程かかります。
Direct Showを使用する場合、この程度かかるのは普通でしょうか。
試しにプログラムに時間計測させた所、
FMediaControl->Run(); で640x480 の時160mS 1600x1200の時620mS(カウンター2-3間)
FMediaControl->Stop(); で640x480 の時310mS 1600x1200の時330ms(カウンター5-6間)
かかって居ました。
プログラム自体は先人が作成したもので、私はDirectXが良く分からないので、これから勉強し、時間が短く出来るのであれば挑戦したいと思って居ます。
ただ、他の開発時間も足りないので、初めからこの位かかるのが正常ならばここの部分はそのままにして置きたいと思い、質問させて頂きました。
下記に使用して居るプログラムの抜粋を記します。
この処理時間が正常なのか、正常で無い場合、考えられる原因、若しくは原因の調査の仕方をお教え頂ければ幸いです。
DWORD dTime0;
DWORD dTime1;
DWORD dTime2;
DWORD dTime3;
DWORD dTime4;
DWORD dTime5;
DWORD dTime6;
dTime0 = GetTickCount();
FCurrentCam = Cam;
FCaptured = false;
dTime2 = GetTickCount() - dTime0;
hr = FMediaControl->Run();
dTime3 = GetTickCount() - dTime0;
DWORD dTime0;
DWORD dTime1;
DWORD dTime2;
DWORD dTime3;
DWORD dTime4;
DWORD dTime5;
DWORD dTime6;
dTime0 = GetTickCount();
// 前回のキャプチャー終了待ち
for( int i=0; i<100 && FBusy; i++ ) {
Sleep( 100 );
}
if( FCurrentCam!=Cam ) { // カメラが同じ場合レンタリングしなおす必要なし
// レンダリングしなおし部分省略
}
FCurrentCam = Cam;
FCaptured = false;
dTime2 = GetTickCount() - dTime0;
hr = FMediaControl->Run();
dTime3 = GetTickCount() - dTime0;
DWORD Ed = GetTickCount() + 3000; // 3000はタイムアウト
do {
Application->ProcessMessages();
Sleep( 20 );
} while( !FCaptured );
dTime4 = GetTickCount() - dTime0;
long ImageSize = Cam->prImageSize;
dTime5 = GetTickCount() - dTime0;
frmMain->lHrs[22] = FMediaControl->Stop();
dTime6 = GetTickCount() - dTime0;;
FBusy = false;
return Cam->prImage;
}
No.2ベストアンサー
- 回答日時:
#1 です。
>Run/Stopを繰り返さないで、どの様にキャプチャー出来るのでしょうか?
参考URLは SDK の 「サンプル グラバの使い方」というものです。
簡単に言えば、Run() 状態のまま、カメラのストリームから欲しい時にだけスナップショットでイメージを得る方法です。Stop() はアプリが終わるまで呼びません(時間が掛かるので)。
この方法の実装はネットで幾つか見つかると思います(どれも似ています)。
しかし、複数台のカメラで有効なのかどうか私には判りません。
よって #1に書いた「個人的にどうなのかな?」の部分は次のように言い換えたい思います。
・カメラが1台ならRun/Stopは繰り返さない方が早いと思う。しかし、複数台のカメラになると、そうせざるを得ないのも知れない。...です。
参考URL:http://msdn.microsoft.com/ja-jp/library/cc371163 …
再度のご回答ありがとうございした。
グラバーで検索するんですね。昨日はPose等をやって見ましたが、違う所を探していた様です。
これから会社に行って探してみます。
会社の環境だと、質問サイトはセキュリティーのブロックがかかってしまい、家には開発環境が無いので直ぐに試す事が出来ません。
これで解決出来るといいのですが。
ありがとうございました。
No.4
- 回答日時:
ANo.2さんへの返答に近いのですが、複数カメラでもRun,Pauseを繰り返す必要がありません。
ただしマルチスレッドを使った場合の話ですが。DirectShowはマルチスレッドでの利用が出来るようです。
再度のご回答ありがとうございます。
現在、davidfox さんの書き込みを元に、GetCurrentBufferで画像を入力しようと思っていますが、何故か最初の画像しか取得出来ないでいます。
ただ、京都大学の川島講師のサンプルプログラムで、画像の連続取得には成功しています。
これは昨年やったものですが、川島講師のサンプルプログラムの中にGetCurrentBufferを使ったものもありましたので、今週はこれを参考に検討を進めて見ようと思っています。
DirectXを全く知らない私にはちょっときつい開発です。
http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewi …
No.3
- 回答日時:
明らかに無駄な処理をしていることによる遅さですね。
そんなにかかりません。ちなみにRunとStopは繰り返してもいいですがものすごく短い時間間隔では無論行ってはいけません。
複数カメラが合ってもマルチスレッドを使うことによって同時にキャプチャできます。静止画ではなくて動画です。
No.1
- 回答日時:
回答と言えるレベルではないので参考程度でお願いします。
私は1台のカメラ接続しか経験が有りませんが、640x480で160+310=470msec ... x6台であるのと、ハードの性能を考えると、明らかにおかしいとは言えないように感じます。
とは言え、Run/Stop を繰り返すのは個人的にどうなのかな?と思いますが。
手間(と費用)を掛けて、お使いのカメラメーカーに相談するのが良いと思いますが、そこは状況次第ですね。
この回答への補足
ご回答、ありがとうございます。
>640x480で160+310=470msec ... x6台であるのと、
測定時間は6台のカメラでは無く、1台のカメラでのキャプチャー時間です。
>とは言え、Run/Stop を繰り返すのは個人的にどうなのかな?と思いますが。
Run/Stopを繰り返さないで、どの様にキャプチャー出来るのでしょうか?
キャプチャーの開始(Run)、キャプチャーの終了待ち(Stop)と思って居るのですが私の理解の誤りでしょうか?
Run/Stop以外でキャプチャーする方法があればお教え下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ジャンカラへ彼氏と行くのです...
-
iPhoneカメラのアイコンの右上...
-
キヤノン アソビカメラ iNSPiC ...
-
複数のカメラ認識について
-
Galaxy A52 5G と Galaxy A53 5...
-
携帯のカメラを使えなくする方法
-
図が大きすぎます。入りきらな...
-
カラオケドレミって個室に防犯...
-
Nikonのピクチャーコントロール...
-
カメラ初心者です。 ドン・キホ...
-
カメラ無しスマホは有りますか?
-
USBに接続したカメラの画像を ...
-
ラブホって隠しカメラありますか。
-
LENOVO X230でカメラをBIOSから...
-
Windows7のPCでスカイプ使用 内...
-
自撮りする時の映りに関して質...
-
iPhone13プロを使用しているの...
-
ノートPCにUSBカメラを接続する...
-
上の~、下の~の言い方
-
古いカメラとSDカード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラ性能の良いAndroidを教え...
-
キヤノン アソビカメラ iNSPiC ...
-
iPhone13プロを使用しているの...
-
カメラ初心者です。 ドン・キホ...
-
Galaxy A52 5G と Galaxy A53 5...
-
監視カメラの作動しているして...
-
iPhoneカメラのアイコンの右上...
-
ジャンカラへ彼氏と行くのです...
-
カメラのキタムラで要らなくな...
-
ノートパソコン内蔵のカメラが...
-
カラオケ屋さんで防犯カメラ部...
-
図が大きすぎます。入りきらな...
-
上の~、下の~の言い方
-
自動販売機って… 隠しカメラと...
-
カラオケドレミって個室に防犯...
-
左右反転操作は誰得なの?
-
ノートPCにUSBカメラを接続する...
-
Windows10 DellのPCの内蔵カメ...
-
ラブホって隠しカメラありますか。
-
Windows7のPCでスカイプ使用 内...
おすすめ情報