[2018年4月14日]
複数画面 切替表示プログラムを、少し変更した
“物事は諦めが肝心”とよく言われるが、“もしかしたら良い解法があるかもしれない!”と、諦め切れず/相変わらず、「複数カメラ群の4画面(=窓)同時表示」の自作プログラムの「エラー発生回避」の改善作業にのめり込んでいる。
それも、有り合せの(特性の揃わない)USB/WEBカメラ群で、時折カメラの入れ替えなどもやりながらだから、なかなか収束せずに、やや発散気味。(苦笑)
今回は、手動またはタイマーを使って、第1組(上2画面)と第2組(下2画面)の表示時間を、“指定”して設定出来るようにして、「エラー発生」が切替回数に拠るものか、あるいは、単に経過時間に依存するものかを調べてみることにした。(図1、動画1は手動で切り替えている様子)
...暫定的な結果は、どうやら、単に起動後およそ40分〜2時間後に“不規則・突発的に発生”するらしく、閾値のあるようなどちらの事象でもないようだ。時には、起動して暫く後に、いきなりエラーになることも。(ヘッ?)
...もしかして、エラー原因は、通信衝突(collision)?...でも、USB系は基本的には“パケットの衝突”などは無いそうだが。
もしそうなら、、“突発的エラー”の原因の大元は何処なのか?...もう少し、自作プログラムの方も、細かく網を張ってみるか。
−−−−−−−−−−−−−−−−−−−−−−−−−
+++ 接続カメラとプレ画面 +++
「エラー発生回避」の検討中だが、それと併行して、より使い易くするために、プログラムを弄くっているが、これもその一つ。
接続するUSB/WEBカメラは、時々入れ替えたり向きを変えたりするので、どれがどのカメラかが分かり難くい。
そんな時は、同定するのに、「Amcap」や「LiveCaputure2」などのお世話になるのだが、ちょと不便!(図3<クリック>は、「Amcap」のDevicesリスト)
出来れば、自前で、何番のカメラは何を映しているか?くらいは見られるようにしたいと、“プレ画面(小窓)表示”をさせてみた。(図2)
自作プログラムは、(「OpenCv2.0」だけにベッタリ依存しているので、)残念ながらカメラ名を取り出すことが出来ないし、それを“小窓名”として入れることも叶わない。
今は、単純・適当に、Cam1,Cam2などとしてある。
(Direct_Showのライブラリなどを使えば、出来るらしいのだが、まだ力不足)
残念ながら、先般買った(ガラス・レンズ使用の)UCAM-DLA200Hは、画像(映像の一部)は採れているはずなのに、立ち上がりが遅いためか、“窓真っ黒!”(図2左上の小窓)
(これって、プログラムを改善すれば出せるものなのかな?)
+++ あ〜!エラー!! +++
2画面(2カメラ、1組)だけの連続表示なら、(幾時間経っても)エラーが発生しないことは、事前に調べてある。
だから、(カメラ群を)切り替える操作が、エラーを発生させることは間違いない!
その頻度が大きいほど、エラーが起き易いようでもある。
切替回数(累積頻度)の限界閾値は、特には無さそうで、“エラー生起度数”に関連するといった感じで、つまり確率は同じでも、受け皿が広くなれば、“発生の絶対数”も増えるというわけ。
これまでは、ハンドル数やスレッド数の増大が原因のひとつかな?と思っていたが、どうも違うらしい。(図5、図6<クリック>)
現に、今室内で働かせている系(6カメラ系)では、第1組、第2組どちらも同じ10秒間表示で切り替えていて、ハンドル数は7,100を超え、スレッド数は620を超えているのに、まだ、エラー発生の気配は無い。
...いや!遂に、室内系も約4時間経過後に、エラー発生!(その時点で、メモリ数:78.9M、ハンドル数:7,908、スレッド数:697、USERオブジェクト数:758だった)
しかし、これらの数値は、“エラーの除去”を考える上では、あまり役に立たないかもなぁ...
まぁ、“エラーの除去”は無理だとしても、出来れば“事後処理”をユーザ(自作プログラム)側でやれば、四六時中“全自動”でやれるはずだ。
何とか、「OSが出すエラー(と停止)」を検出出来れば、“事後処理”をしたいものだが。