2012-03-30 4 views
0

私はOpenCVにPythonバインディングを使用しています。私が存在しない(または悪い)ファイルをcv.CaptureFromFile()に渡すと、失敗の戻り値をどのようにテストするのですか? C/C++ APIでは、cvCaptureFromFile()はNULLを返します。 Pythonでは、私が手: "<キャプチャ(ゼロ)>" 私は "<キャプチャ(ゼロ)>" をテストするにはどうすればよいPython + OpenCVでは、cv.CaptureFromFileが失敗の戻り値をどのようにテストするのですか?

capture = cv.CaptureFromFile(infilename) 
# capture != None on failure so this doesn't work. 
if capture is None : 
    print "Unable to open \"{0}\"".format(infilename) 
    sys.exit(1) 

私ははos.stat()を使用することができますが、それは、ファイルがファイル(例えば、コーデックのエラー)を復号することはできません本当にOpenCVのに過ぎず存在する場合に役立ちません。

答えて

2

cv.QueryFrame(キャプチャ)を使用して1つのフレームを読み込もうとします。 Noneを返すと、ストリームを開くことができません。

+0

これはos.stat()と組み合わせて、私の最高の賭けのようです。私はOpenCVソースを掘り下げて、最適なソリューションを見つけようとしました。 –

0

ブール値としてテストするとうまくいくはずです。これを試してみてください:

capture = cv.CaptureFromFile(infilename) 
if not capture: 
    print "Unable to open \"{0}\"".format(infilename) 
    sys.exit(1) 
+0

非常に奇妙です。動作しません。 ""はまだTrueです。 –

関連する問題