【发布时间】:2014-11-23 21:10:39
【问题描述】:
我是初学者从官方文档http://docs.opencv.org/trunk/doc/py_tutorials/py_gui/py_video_display/py_video_display.html#display-video学习opencv
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
它给了我错误"Segmentation fault (core dumped)"
谁能告诉我为什么会这样以及如何解决这个问题?
提前致谢。
【问题讨论】:
-
你的程序在哪一行崩溃了?
-
我不知道如何找到它。当我运行该代码时,我得到的只是“分段错误(核心转储)”。
-
尝试从您的代码中删除 cap.release() 行。来自文档:“在 C API 中,当您完成视频处理后,使用 cvReleaseCapture() 释放 CvCapture 结构,或使用在析构函数中自动调用 cvReleaseCapture() 的 Ptr
。”这让我觉得内存是自动释放的,调用 cap.release() 会过早地删除一些东西。 -
没用。给我同样的错误。
-
在您的代码中添加检查:
if(!cap.isOpened()) print 'error'紧跟在cap.open()之后。同时添加if(ret==False) print 'frame missing'。
标签: python opencv ubuntu-14.04