[2018年7月7日]
多カメラ動画並走に、挑戦中
1台の“PC(マシン)”に複数の“USBカメラ”を繋ぎ込んで、どれだけの数の画面/窓に“動画表示/並走”が出来るか?ってのを課題にしているのだが、それを「自作プログラム(UCam10.exe)」を逐次改造し、様々なUSBカメラ(ジャンク品)を買い集めながら、しつこく/執念深くやって来た。
今回、やっと、6画面/6窓まで、全動画並走が出来るようになった♪(図1)
多少のギクシャク感はあるが、これは「自作プログラム」の記述ミスに起因する部分もある。(動画1<クリック>)
一番の勝因は、特性の似通ったカメラ(群)が手に入って、それらを組み合わせたこと。
+Microsoft製HD-3000−1台
+Logicool製Qcam Orbit/Sphere AF(V-UCC22)−3台
+Logicool製QVR-1(V-UU22)−2台
それに、多画面表示が容易な“横長表示”のマシンもヒントになったが、「自作プログラム」を、自分で好きなように改変出来るってことが、何より大きい♪
6画面並走は実現出来たが、(インジケータ/ラジオ・ボタンの)“走査の速さ”を見ていると、カメラ群をちゃんと揃えると、10台位までは並走可能なのではないか?と思った。尤も、現状では、そんなに並走台数は必要無いけれど、一度確かめてみたい気もする。
−−−−−−−−−−−−−−−−−−−−−−−−−
+++ 自作プログラム(部分) +++
「自作プログラム(UCam10.exe)」の全体については、また別に整理して記録しておきたいと思っているが、まだまだ落ち着きそうにないので、取り敢えず、部分的な留意点だけを残す。
「6画面/6窓並走」プログラムの“作成道具”として、最初に選んだ「VC++ 2008 Express」と「OpenCV 2.0」で十分だったこと。
途中で、何度もVC++やOpenCVのバージョン・アップも考えたが、“入れ替えの煩わしさ”の方が重荷だったので、結局は替えず。
・・・カメラからの映像信号は、OpenCVの基本形通りに、読み込んで指定窓(Mado[1]など)に表示する。
それを、カメラ6台分、単純に並べただけだ。(図3)
基本から少し外れている箇所は、cv::waitKey(1)内の「待ち時間(1)」で、入門書などには、cv::waitKey(30)と書いてあるが、(“0”はダメだが、)“1”でも構わないようだ。
ここで、“キー入力検出”が出来るらしいのだが、実際には、(30)にしても、キーが上手く読めなかった。(他の仕事が忙し過ぎるからだろうか?苦笑)
“映像読み込み指示”は、cama >> fa_buf;などだが、カメラからの映像信号を捕捉出来ない時は、この一行指示ですら、なかなか応答が無くて、時間が掛かる。
そんな時は、set_indicator(cam_no1);が次に進まないから、メニュー上の「ラジオ・ボタン」が停まったままになるわけだ。
(系と相性の悪いカメラだと、これがずっと停まったままになり、プログラムが一種の暴走状態になってしまって、電源を落とさないと、けりが付かなくなることがある)
逆に、「ラジオ・ボタン」がスムーズ/流れるように走っていれば、カメラ(群)からの読み込みが速いから、カメラ台数ももっと増やせそうだ!?ってことになる。(笑)
このルーチンの前部で、カメラの“映像サイズ(VGA、QVGAなど)”の指定をしている。(図4<クリック>)
例えば、cama.set(CV_CAP_PROP_FRAME_WIDTH, FwL)で、横幅:Fwlを640...などにセット出来るようにしている。
しかし、6画面/6窓位になると、VGA(640x480)では、“映像読み出し”がスムーズでない時や、全然読み出せない時がある。(色々な物事が、重荷になって来るからだろうな)
なので、比較的安定して読み出せるQVGA(320x240)に落とせるようにしてある。
+++ 8画面 & 画面撮影 +++
6画面/6窓が成功したので、調子付いて、8画面/8窓も試してみた。(図5)
...だが、追加した有り合せのUSBカメラ(UCAM DLA200H)の方が付いて来なかった。(図5右下2窓)
ちゃんとした映像信号が読み出せないまま、(ニセ信号で?)通過してしまっている。
これに替えて、「Logicool製HD 720p(Webcam C270)」も試したが、やはり、映像は出なかった。
目下の悩みは、“更に信号の性質の悪いカメラ”を付加した場合、「自作プログラム」が応答しなくなる(ドツボにはまる!)ことで、[Ctrl+Shift+Esc]キーで呼び出す[プロセス終了]など、ソフト的な方法では、どうやっても終了出来ず。
最後は、「電源ボタン」で強制的に終らせる方法しかない。
毎回、こんなことをやらねばならないプログラムでは、ダメだ!(怒泣)
更にカメラ台数を増やすには、素性の悪いものは使えないようだ。やはり、上記と同じカメラを揃えねばならないかな?
しかし、全部が“可動式”では、コストパフォーマンスも低いし、面白味も少ない。
出来れば、固定型で安価なのを揃えたいが、選ぶのがなかなか難しい。
後日、「V-U0019(C210)」を買ってみたのだが、失敗だった!今の系には入れられない。全部が、それらだけの系にすれば、動く可能性は有りそうだが。
まぁ、これだけ画面数/窓数が多くなると、通常なら“映像キャプチャの仕方”が問題だが、今はデータ採取だけだから、デジカメ(DMC-FX01など)を据えて撮影している。(図6<クリック>)
しかし、近距離だと歪が大きくて、如何にも見苦しい!
出来れば、ボタン一つで、スクリーン全体を(動)記録して行く方法も考えたい。(貧乏暇無し!笑)