2017-12-21 30 views
0

こんにちはみんなは、私は、この時点で立ち往生しています。私はopencvを使って私の画面上で4つのビデオを再生したい。誰も私にそれをやる方法を助けることができますか?私は次のコードを参照しています同時にpythonでopencvを使って複数の動画を同時に再生するにはどうしたらいいですか?

  1. first.avi
  2. second.avi
  3. third.avi
  4. fourth.avi

をプレイしたいとします。それは単一のaviファイルのために非常によく演奏します。 連結する必要がありますか、4つの異なるウィンドウで実行できますか。任意の提案は、複数のビデオを再生するためのNP

# Create a VideoCapture object and read from input file 
# If the input is the camera, pass 0 instead of the video file name 
cap = cv2.VideoCapture('first.avi') 
cap2 =cv2.VideoCapture('second.avi') 

if (cap.isOpened()== False): 
    print("Error opening video stream or file") 
if (cap2.isOpened()== False): 
    print("Error opening video stream or file") 

while(cap.isOpened()||cap2.isOpened()): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 
    ret, frame1 = cap2.read() 
    if ret == True: 

    # Display the resulting frame 
    cv2.imshow('Frame',frame) 
    cv2.imshow('Frame', frame1) 


    # Press Q on keyboard to exit 
    if cv2.waitKey(25) & 0xFF == ord('q'): 
    break 
    else: 
    break 


cap.release() 
cap2.release() 

cv2.destroyAllWindows() 
+0

だけですべてを読み、表示しますか? – Silencer

+0

は、私はカメラのキャップからキャプチャ中= cv2.VideoCapture(0)CAP1は= cv2.VideoCapureは、(1)うまく機能していることを知っているが、その適切 – Aviator

+0

を動作していないファイルからビデオを再生しながら、私はすべてを読み取ろうとしましたが、それは同じフレーム – Aviator

答えて

4

として歓迎 輸入CV2 輸入numpyのは、我々は、各ビデオのためのユニークなウィンドウのタイトルを使用する必要があります。どのように達成できるかを示すサンプルコードを示します。

import numpy as np 
import cv2 

names = ['first.avi', 'second.avi', 'third.avi', 'fourth.avi']; 
window_titles = ['first', 'second', 'third', 'fourth'] 


cap = [cv2.VideoCapture(i) for i in names] 

frames = [None] * len(names); 
gray = [None] * len(names); 
ret = [None] * len(names); 

while True: 

    for i,c in enumerate(cap): 
     if c is not None: 
      ret[i], frames[i] = c.read(); 


    for i,f in enumerate(frames): 
     if ret[i] is True: 
      gray[i] = cv2.cvtColor(f, cv2.COLOR_BGR2GRAY) 
      cv2.imshow(window_titles[i], gray[i]); 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 


for c in cap: 
    if c is not None: 
     c.release(); 

cv2.destroyAllWindows() 

P.S:このコードは、デモの目的のためだけ迅速かつ汚い例です。 Ubuntu 14.04でPython 2とOpenCV 3.2でテスト済みです。

関連する問題