2
私は2台のカメラを持っていますが、これはOpenCVでフレームを正確に同時に読むためには重要です。Lock
のように思っていましたが、 、私はフレームを読み取るために、スレッドを押して有効にするために、いくつかのトリガーを必要とし、別のトリガヒットを待って、以下のようなもの:上記の実装と全く同じ時刻に異なるリソースを読み取るための同期スレッド
def get_frame(queue, cap):
while running:
if(read_frame):
queue.put(cap.read());
else:
# without this sleep this function just consumes unnecessary CPU time
time.sleep(some_time);
q = Queue.Queue()
# for every camera
for u in xrange(2):
t = threading.Thread(target=get_frame, args = (q, caps[u]))
t.daemon = True
t.start()
問題は、次のとおりです。
- 私が必要私がevの間の遅延を知らないので定義されるべき睡眠時間(つまり、計算に応じて長くても短くてもよい)
- これは、トリガーヒットごとに1回読むことはできません。
このアプローチは機能しません。
現在、私は2台のカメラを持っていないので、同期がどれほどうまく動作したかについてコメントしてください。 – saurabheights
@saurabheights確かに、私はそれに取り組んでいる、私は[ここに記載されている問題がある(http://stackoverflow.com/questions/40060515/how-to-capture-video-from-webcam-in-mjpg-opencv) ;私がそれを解決できれば、次のフェーズは同期です。あなたの提案の基本的で素朴な実装は今のところうまく動作しているようです。 – dariush