当前位置: 首页 > 知识库问答 >
问题:

Pycharm-运行Open CV代码直接进入“流程结束,退出代码139(被信号11:SIGSEGV中断)”

梁丘璞瑜
2023-03-14

我试图运行打开cv代码,以访问我的网络摄像头在Python脚本。然而,当我试图运行它时,每次我试图运行它时,我都会得到“进程完成,退出代码139(被信号11打断: SIGSEGV)”。我的代码中没有错误,我也看了其他帖子来添加环境变量:PYTHONUNBUFFERED=1;PYDEVD_USE_FRAME_EVAL=NO; 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() 

共有2个答案

楚硕
2023-03-14

再加上。

SIGSEGV是一种内存访问冲突,我在使用来自c库的代码时经常发现这个错误。实际上,您正在尝试访问内存中已删除的对象,但对该对象的引用仍然保留。

当你称这些为

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

opencv本质上必须删除内存中的对象。

然后,当您进行下一次循环的时候,您尝试用这个来访问它们。

`ret, frame = vid.read()

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

但是视频捕获对象和窗口不在那里(但是对python对象的引用仍然存在)。

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

谢锦程
2023-03-14

最后两行必须在time循环之外:

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()
 类似资料:
  • 问题内容: 我正在尝试执行Python脚本,但出现以下错误: 我在Linux Mint 18.1 Serena OS上使用python 3.5.2 谁能告诉我为什么会这样,我该如何解决? 问题答案: SIGSEGV信号指示“分段违反”或“分段错误”。或多或少,这等同于对该过程中未映射的内存地址的读取或写入。 这表明程序中存在错误。在Python程序中,这可能是解释程序中的错误,也可能是所使用的扩展

  • 我使用数据帧合并3次以获得我想要的结果 当我尝试做第三个合并选项时,我得到以下错误; 过程结束,退出代码137(被信号9:SIGKILL中断) 我如何克服这个问题?

  • 问题内容: 我正在运行一个python脚本,它曾经可以运行(现在甚至可以在我的另一台笔记本电脑上运行),但是在我当前的计算机上却不行-我只收到错误代码: 我没有得到任何其他结果-甚至从文件开头的“打印”命令也没有得到。 我还没有找到特定的东西。我重新安装了python(2.7.9),pygame(1.9.1)甚至pycharm(首先尝试4.5,现在使用5.0-相同的结果) 有人知道该错误代码意味着

  • 我尝试用Android JNI和OpenCV开发应用程序,得到了一个可怕的错误:libc:致命信号11 (SIGSEGV),代码1,tid 28694中的错误地址0xfffffffc。 我按照这篇文章来实现这个算法,当我在Visual studio 2015上运行它时,它工作得很好。但是当我尝试在Android JNI上实现它时,它出现了以下错误。 这是我的代码: 我创建了一个类extends o

  • 与目标虚拟机断开连接,地址:'127.0.0.1:60359',传输:'socket' 进程结束,退出代码为130(被信号2:SIGINT中断) 我哪里错了?我能做什么?Intellij的更新没有改变任何事情。

  • 问题内容: 每当我运行任何代码时,控制台始终以结尾。 例如,如果我只打印(“ hellow”): 有什么办法可以使输出“成螺旋形”? 问题答案: 您知道它不是输出的一部分吗?这只是IDE控制台提供的其他信息。实际程序只是按预期输出。 这样说意味着一切正常。如果程序中发生异常,否则将使用非零参数生成,IDE将通知您有关此信息,这是有用的调试信息。 在生产中,您不应该从IDE运行Python程序,因此