2017-06-26 75 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),它工作。