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で質問しましょう!
似たような質問が見つかりました
- Windows 10 (続き2)2つのウィンドウ選択時の表示について 3 2023/08/21 22:41
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- 物理学 誘導起電力について 誘導起電力Vはファラデーの法則より、φを回路を貫く磁束として、 V=-(dφ)/ 1 2023/03/01 05:13
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- その他(プログラミング・Web制作) 物理の斜方投射のシミュレーションにおける位置や速度の単位について 4 2023/05/31 09:50
- 経済学 資本移動や価格変動のない次のような固定為替レート・モデルを考える。 C = 10 + 0.8 Y I 3 2022/06/21 20:50
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iPhoneカメラのアイコンの右上...
-
キヤノン アソビカメラ iNSPiC ...
-
ジャンカラへ彼氏と行くのです...
-
Galaxy A52 5G と Galaxy A53 5...
-
ノートパソコン内蔵のカメラが...
-
カメラ初心者です。 ドン・キホ...
-
監視用?カメラ
-
ペットカメラで外から家内見れ...
-
真ん中の四角のカメラみたいな...
-
カメラ設置について
-
テレビの上にカメラ、裏にはこ...
-
カメラのキタムラで要らなくな...
-
ノートパソコンのカメラが使えない
-
スマホのカメラのシャッター音...
-
携帯のカメラを使えなくする方法
-
ノートPCにUSBカメラを接続する...
-
カメラの本体の青いサビの落とし方
-
WEBカメラを車に取り付けて前方...
-
外付けのウェブカメラを中古で...
-
カメラ性能の良いAndroidを教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneカメラのアイコンの右上...
-
ジャンカラへ彼氏と行くのです...
-
Galaxy A52 5G と Galaxy A53 5...
-
カメラ付きインターフォンの位...
-
真ん中の四角のカメラみたいな...
-
カメラ初心者です。 ドン・キホ...
-
テレビの上にカメラ、裏にはこ...
-
監視用?カメラ
-
キヤノン アソビカメラ iNSPiC ...
-
監視カメラの作動しているして...
-
カメラ設置について
-
カラオケドレミって個室に防犯...
-
ノートパソコン内蔵のカメラが...
-
ペットカメラで外から家内見れ...
-
カメラの本体の青いサビの落とし方
-
防犯カメラについて
-
自分のPCにカメラが内臓してい...
-
左右反転操作は誰得なの?
-
カメラ付きインターホン取り付...
-
上の~、下の~の言い方
おすすめ情報