2017-06-26 103 views
0

我在Python中使用OpenCV2一段時間,我不明白爲什麼幾天它不適用於視頻捕獲。
例如,此代碼的工作:VideoCapture的OpenCV分段錯誤

>>> import cv2 
>>> a = cv2.imread('./pic_video0_145.jpg') 
>>> a.shape 
(416, 576, 3) 

不過,這並不捕捉(在Jupyter筆記本或死內核)從Python中的視頻和退出:

>>> import cv2 
>>> cap = cv2.VideoCapture('./video6.avi') 
Segmentation fault: 11 

它用於工作,我不記得有關於OpenCV的改變(可能是MacPorts的更新)。

更多信息:
我工作在Mac OS X 10.12
版本:3.2.0
安裝了MacPorts的:opencv @3.2.0_1+contrib+debug+python35+qt4+tbb (active)

非常感謝您的幫助。

+0

你試過用另一個視頻嗎?或與網絡攝像頭?也許重新安裝opencv? – api55

+0

是的,我嘗試了Jupyter Notebook中的多個視頻,這些視頻是從腳本和iPython啓動的。不,我沒有嘗試使用攝像頭,因爲我根本沒有使用它。我寧願不重新安裝openCV,除非它是唯一的解決方案... –

+0

它工作或與其他視頻失敗?通常情況下,分段錯誤是出界內存訪問....所以它可能是一個錯誤,或者可能是一些編解碼器的問題? – api55

回答

1

最後,我用MacPorts卸載並重新安裝了OpenCV2(正確安裝)。

sudo uninstall opencv 
sudo port install opencv +debug +python35 +qt4 +tbb +contrib 

# To use openCV in a virtual env 
cp /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so VIRTUALENV_PATH/lib/python3.5/site-packages/ 

我也需要更新numpy(pip install numpy -U),它工作。