2016-09-26 20 views
-1

複数のカメラから1つのビデオマッシュアップにビデオをつなぎ合わせるために、複数のVideoCaptureオブジェクトを作成したかったのです。複数のVideoCaptureオブジェクトを作成する方法

たとえば、以下のビデオキャプチャオブジェクトを使用して読み上げたい3つのビデオのパスがあり、個々のビデオからフレームを取得するので、それらを書き込みに使用できます。ビデオパスのN個

cap0=cv2.VideoCapture(path1) 
    cap1=cv2.VideoCapture(path2) 
    cap2=cv2.VideoCapture(path3) 
    . 
    . 
    capn=cv2.VideoCapture(path4) 

は同様に、私はまた、私はパスがあるリストにforループを使用してみました

ret,frame0=cap0.read() 
ret,frame1=cap1.read() 
. 
. 
ret,frameN=capn.read() 

ようなフレームを読み出すためにフレーム・オブジェクトを作成したい場合:期待

1つのパスだけが読み込まれ、その特定のビデオのみのためにフレームが保存されるたびに表示されます。多くのフォーラムでは、C++で複数のキャプチャオブジェクトを作成できますが、ハンド。私はPythonのpgogrammerないんだけど、おそらく解決策のようなものがある

frames=[] 
for path in videoList: 
    indices=[] 
    cap = cv2.VideoCapture(path) 

    while(cap.isOpened()): 
     ret,frame=cap.read() 
     if not ret: 
      break 
     indices.append(cap.get(1)) 
    frames.append(indices) 
    cap.release() 
    cv2.destroyAllWindows() 
+0

私のpythonについて多くを知らないが、それはあるかもしれませんスコープの問題?したがって、ループ内でローカルにcv2.VideoCapture(pathN)を作成すると、ループを終了すると失われる可能性がありますか?あなたが行ったことを正確に示すためにコードを共有する必要があります。 – Micka

+0

2つ目のビデオクリップを作成する前に、ただ1つのビデオクリップとループをエンドレスに作成するだけです... – Micka

答えて

1

今まで これは私のコードです:

frames=[] 
caps=[] 
for path in videoList: 
    indices=[] 
    caps.append (cv2.VideoCapture(path)) 

for cap in caps: 
    frames=[] 
    if(cap.isOpened()): 
     ret,frame=cap.read() 
     frames.append(frame) 
    else 
     // no frame for this device could be captured. What to do? 

// now "frames" holds your captured images. 
+0

ソリューションをありがとうございます。 –

関連する問題