2017-03-25 6 views
1

私はMacOSのsierra 10.12.3にopencv3をインストールしました。いくつかの例を試してみましたが、うまくいきましたが、次の例を試してみるといくつかの例外がスローされます。私のpythonバージョンは2.7です。
私は問題を理解することはできません。誰かが私にこの問題を助けることができますか? 私のPythonのコードは次のとおりです。Python:Pythonを使ってOpenCVでビデオをテストする

import cv2 
import numpy as np 
cap = cv2.VideoCapture("vtest.avi") 

ret, frame1 = cap.read() 
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) 
hsv = np.zeros_like(frame1) 
hsv[...,1] = 255 

while(1): 
    ret, frame2 = cap.read() 
    next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY) 

    flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0) 

    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) 
    hsv[...,0] = ang*180/np.pi/2 
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX) 
    rgb = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR) 

    cv2.imshow('frame2',rgb) 
    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 
    elif k == ord('s'): 
     cv2.imwrite('opticalfb.png',frame2) 
     cv2.imwrite('opticalhsv.png',rgb) 
    prvs = next 

cap.release() 
cv2.destroyAllWindows() 

エラーメッセージは次のとおりです。

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /tmp/opencv3-20170324-1646-1ehj5xu/modules/imgproc/src/color.cpp, line 9748 
Traceback (most recent call last): 
    File "/Users/Rouzbeh/BoxSync/Spring2017/TrafficProject/test/test.py", line 6, in <module> 
    prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) 
cv2.error: /tmp/opencv3-20170324-1646-1ehj5xu/modules/imgproc/src/color.cpp:9748: error: (-215) scn == 3 || scn == 4 in function cvtColor 

更新
私はffmpegのフォーマットといくつかの問題を抱えていました。ただし、ビデオは表示されますが、最後にはこの例外がスローされます。

+0

それは3つのチャネルまたは4つのチャネルがないと言います。ビデオグレースケールですか? –

+0

ビデオを表示しますが、最後にこの例外がスローされます。 – RZK

答えて

3

をffmpegのサポートしていません。あなたはする必要があります:

while(1): 
    ret, frame2 = cap.read() 
    if not ret: 
     break 
    next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY) 
    # rest of code here 
    pass  
+0

ありがとうクワン、それは働いた – RZK

2
cap = cv2.VideoCapture("vtest.avi") 
print cap.isOpened() 

あなたが正常に動作しcv2.VideoCapture()機能を確認することができます

多分あなたのOpenCVframe1が空である、なぜならビデオの終わりだ

+0

私はそれを印刷すると、それは真だと言います。また、ffmpeg-2.8もインストールされています。私のウェブカメラ用VideoCaptureは動作しますが、外部ビデオでは動作しません。 – RZK

関連する問題