2017-09-23 11 views
1

私はカメラからビデオを読み込んで表示して保存するコードを以下に書いています。python opencvがサードパーティのカメラを使用しているときにビデオを表示できませんでした。

VideoCapture(0)でオプション0で以下のコードを実行すると、VideoCapture(1)のビデオカメラを取得するためにVideoCapture(1)を1に変更すると、正常に動作し、Webカメラのビデオが表示されます。エラー。

私はそれがビデオを再生彼らのソフトウェアで、サードパーティ製のカメラを使用しています、私は私のPythonコードを使用してキャプチャする必要がある。..

apbase code qtの例でも、それは私がビデオ

を果たしていますcv2.imshowで\ Python32Bitの\ video.py、ライム89、(:Pythonのコードの下

import cv2 
import numpy as np 
import time 
def nothing(x): 
    pass 

cv2.namedWindow('images') 
switch = 'Recording' 
cv2.createTrackbar(switch, 'images',0,1,nothing) 
cap = cv2.VideoCapture(0) 

def writeVideo(frmae): 
    pass 

switchstatus = 0 

currentpos = 0 
fourccs = cv2.VideoWriter_fourcc(*'MJPG') 
out = cv2.VideoWriter('sample.avi', fourccs, 20.0, (640,480)) 
created = 0 
startrecord = 0 



def RecordVideo(frame): 
    global out 
    global created; 
    global startrecord 
    print "In the Record video" ,created, startrecord 
    if created == 0 and startrecord ==1: 
     filename ='test.avi' 
     filename=time.strftime("%Y-%m-%d-%H-%M-%S")+'.avi' 
     print "filename", filename 
     out = cv2.VideoWriter(filename,fourccs, 20.0, (640,480)) 
     created = 1; 
     out.write(frame) 
    elif created == 1 and startrecord ==1: 
     out.write(frame) 


def positionChanged(s): 
    global currentpos 
    global created 
    global startrecord 

    print "position changed", s 
    currentpos = s 
    if s==1: 
     startrecord = 1 
     created = 0 
    else: 
     startrecord = 0 
    if created==1: 
     created =0 
     out.release() 




def switchchanged(s): 
    global switchstatus; 
    if switchstatus != s: 
     switchstatus = s 
     positionChanged(s) 



while(1): 
    ret, frame = cap.read() 
     RecordVideo(frame) 
    cv2.imshow('images',frame) 

    s = cv2.getTrackbarPos(switch,'images') 

    switchchanged(s) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     out.release() 
     cv2.destroyAllWindows() 
     break 

エラー

ファイル」Cを使用して再生することができません'画像'、フレーム)

EROR:........ \ OpenCVの\モジュール\ hihggui \ SRC \ window.cpp:エラー:( - 215)size.width> 0 & & size.height> 0 in function cv :: imshow

+0

Linuxシステムでは、デフォルトで 'VideoCapture'はビデオ入力デバイスに' libv4l2'を使用します。 'v4l-utils'をインストールし、' v4l2-ctl --all'を実行します。カメラが表示されているかどうか確認してください。 – zindarod

+0

私は窓を試しています – user3607698

+0

窓の場合、おそらく 'DShow'を使用しています。あなたのディスプレイウェブカメラで、 'cap = cv2.VideoCapture(0 + cv2.CAP_DSHOW)'を実行し、動作すれば 'DSHOW'を使用しています。 – zindarod

答えて

1

これは、Windowsのハードウェア設定メニューから組み込みのウ​​ェブカメラを無効にすることで機能します。私は友人のコンピュータでこれをやったので、今はアクセスできませんが、thisをチェックしてください。私はWindowsがopenCVに他のビデオキャプチャデバイスを使用させることはできませんが、0番なので、ハードウェアリストの最初のものを使用する必要があります。

+0

こんにちは、私はデフォルトのカメラを無効にしましたが、私は、 "Imaging Devices"の下にカメラがあることに気付きました。私のサードパーティのカメラは、 "Universal Serial Bus Controller"の下に "aptina Demo"として来ています。このため、カメラにWindowsドライバーをインストールしましたか? – user3607698

+0

? –

+0

はい、「ユニバーサルシリアルバスコントローラ」の下でaptinaデモとして検出されたのは – user3607698

関連する問題