2012-03-30 56 views
0

我正在使用Python綁定到OpenCV。如果我向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(capture)讀取一幀。如果它返回None,則無法打開流。

+0

這和os.stat()結合起來似乎是我最好的選擇。我希望我有時間研究OpenCV源代碼,嘗試找到最佳解決方案。 – 2012-03-31 14:54:12

0

如果你測試它爲布爾值,它應該工作。試試這個:

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

很奇怪。不起作用。 「」仍然爲真。 – 2012-03-31 14:38:15

相關問題