Python Pycharm-运行开放式简历代码直接进入;过程结束,退出代码为139(被信号11:SIGSEGV中断)“;

Python Pycharm-运行开放式简历代码直接进入;过程结束,退出代码为139(被信号11:SIGSEGV中断)“;,python,opencv,pycharm,Python,Opencv,Pycharm,我正在尝试运行opencv代码,以便用python脚本访问我的网络摄像头。然而,当我试着运行它时,每次我试着运行它时都会得到“进程结束,退出代码139(被信号11:SIGSEGV中断)”。我的代码中没有错误,我还查看了其他帖子以添加环境变量:PYTHONUNBUFFERED=1;PYDEVD_USE_FRAME_EVAL=否;PYTHONMALLOC=debug 我的代码是: import cv2 # define a video capture object vid = cv2.Video

我正在尝试运行opencv代码,以便用python脚本访问我的网络摄像头。然而,当我试着运行它时,每次我试着运行它时都会得到“进程结束,退出代码139(被信号11:SIGSEGV中断)”。我的代码中没有错误,我还查看了其他帖子以添加环境变量:
PYTHONUNBUFFERED=1;PYDEVD_USE_FRAME_EVAL=否;PYTHONMALLOC=debug
我的代码是:

import cv2

# define a video capture object 
vid = cv2.VideoCapture(0)
while (True):
    # Capture the video frame
    # by frame
    ret, frame = vid.read()

    # display the resulting frame
    cv2.imshow('frame', frame)

    # the 'q button is set as the
    # quitting button
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

    # after the loop realse the cap object
    vid.release()
    # destroy all windows
    cv2.destroyAllWindows() 

最后两行必须在while循环外:

import cv2

# define a video capture object 
vid = cv2.VideoCapture(0)
while (True):
    # Capture the video frame
    # by frame
    ret, frame = vid.read()

    # display the resulting frame
    cv2.imshow('frame', frame)

    # the 'q button is set as the
    # quitting button
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# after the loop realse the cap object
vid.release()
# destroy all windows
cv2.destroyAllWindows()

最后两行必须在while循环外:

import cv2

# define a video capture object 
vid = cv2.VideoCapture(0)
while (True):
    # Capture the video frame
    # by frame
    ret, frame = vid.read()

    # display the resulting frame
    cv2.imshow('frame', frame)

    # the 'q button is set as the
    # quitting button
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# after the loop realse the cap object
vid.release()
# destroy all windows
cv2.destroyAllWindows()
再加上

SigSeSv是一个内存访问违规,在使用来自C++库的代码时,我发现这个错误很多。实际上,您正在尝试访问内存中已删除的对象,但对该对象的引用仍然保留

当你叫这些

`# after the loop realse the cap object
vid.release()
# destroy all windows
cv2.destroyAllWindows()`
Opencv实际上必须删除内存中的对象

然后,当您执行while循环的下一次迭代时,您将尝试使用此方法访问它们

`ret, frame = vid.read()

# display the resulting frame
cv2.imshow('frame', frame)`
但是视频捕获对象和窗口不在那里(但是对python对象的引用仍然存在)

然后砰,砰,砰。因为它找不到对象,不知道该做什么。

添加到这个

SigSeSv是一个内存访问违规,在使用来自C++库的代码时,我发现这个错误很多。实际上,您正在尝试访问内存中已删除的对象,但对该对象的引用仍然保留

当你叫这些

`# after the loop realse the cap object
vid.release()
# destroy all windows
cv2.destroyAllWindows()`
Opencv实际上必须删除内存中的对象

然后,当您执行while循环的下一次迭代时,您将尝试使用此方法访问它们

`ret, frame = vid.read()

# display the resulting frame
cv2.imshow('frame', frame)`
但是视频捕获对象和窗口不在那里(但是对python对象的引用仍然存在)


然后砰,砰,砰。因为它找不到对象,不知道该做什么。

添加到Sarims答案。SIGSEGV是一个内存访问违规,当使用C++库的代码时,我发现这个错误很多。实际上,您正在尝试访问对已删除对象的引用。好的,我会这样做that@LewisMorris你认为这是因为我的环境变量。我知道前几天我改变了它们,以遵循其他人的解决方案,但它不起作用。我应该把它们改回正常状态吗?可能是的,但为什么它会在jupyter而不是pycharm中工作呢。这很奇怪。在openCv论坛中,你会有更多的运气。也许反应会慢一点。好的,谢谢你@LewisMorris,我刚刚做到了:添加到Sarims的答案中。SIGSEGV是一个内存访问违规,当使用C++库的代码时,我发现这个错误很多。实际上,您正在尝试访问对已删除对象的引用。好的,我会这样做that@LewisMorris你认为这是因为我的环境变量。我知道前几天我改变了它们,以遵循其他人的解决方案,但它不起作用。我应该把它们改回正常状态吗?可能是的,但为什么它会在jupyter而不是pycharm中工作呢。这很奇怪。在openCv论坛中,你会有更多的运气。也许反应会慢一点。好的,谢谢你@LewisMorris,我刚刚做到了: