我对覆盆子pi和python都相当陌生。我已经写了一个代码来分析图像,但我不断收到致命的python错误:(pygame parachute)Segmentation Fault。它通常发生在我的程序中15分钟到1小时之间。从我读过的内容来看,这通常是某种记忆超越问题。我还没有找到任何能够解决我的问题的具体答案。这是我的代码。请帮忙。有没有人有任何建议如何解决或调试这个问题?致命python错误:(pygame降落伞)分割错误
import cv2
from SimpleCV import Image, Camera
import time
import os
import RPi.GPIO as GPIO
T = 1
z = 0
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(31, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.output(31,GPIO.HIGH)
cam = Camera(prop_set={'width':320, 'height':240})
while(T):
w = [0 in range(9)]
if(GPIO.input(32)):
start = 80
pixel = 0
end = 225
time.sleep(0.32)
img = cam.getImage()
img.save('original.jpg')
edges = cv2.imread('original.jpg')
edges = cv2.Canny(edges,90,210)
print("hola")
for y in range (100,160):
i = 0
first = 0
temp = 0
last = 0
for x in range (start, end):
pixel = edges[y,x]
if (pixel >=120 and first == 0):
first = x
if (pixel >=120 and first != 0 and last < x):
last = x
if last != 0:
temp = last - first
for x in range(start, end):
if ((x <= last) and (x >=first)):
edges[y,x] = 140;
while(GPIO.input(32)):
pass
我不知道是什么的大部分意思,但如果我运行(GDB)程序,并做了回溯我得到这个...
(gdb) bt
#0 0x000835f4 in PyEval_EvalFrameEx()
#1 0x00081ca4 in PyEval_EvalCodeEx()
#2 0x000c37c4 in ??()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
今天我发现,如果我做的一切都是进口SimpleCV,图像和摄像头,然后打开摄像头和进入无限循环,我仍然得到分割故障
(gdb) bt
#0 0x00087024 in PyEval_EvalFrameEx()
#1 0x000840cc in PyEval_EvalFrameEx()
#2 0x000a4520 in ??()
如果我使用pygame的拍摄照片,做一个回溯,我得到一个分割故障稍微多一些inf ormation
#0 0x0006de50 in PyErr_Format()
#1 0x70952ee0 in v412_read_frame() from /usr/lib/python2.7/dist-packages/pygame/_camera.so
#2 0x7094ede0 in camera_get_image() from /usr/lib/python2.7/dist-packages/pygame/_camera.so
#3 0x0008360c in PyEval_EvalFrameEx()
#4 0x00081ca4 in PyEval_EvalCodeEx()
#5 0x000c37c4 in ??()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
我发现了gdb的一个新函数。 I型信息线程和我得到...
Id Target ID Frame
2 Thread 0x72df9460 (LWP 601) "python2.7" 0x76e3ab80 in poll()at ../sysdeps/unix/syscall-template.S:81
*1 Thread 0x76ff6000 (LWP 600) "python2.7" 0x0006de50 in PyErr_Format()
然后,如果我输入列表我得到这个
1 ../sysdeps/unix/syscall-template.S: No such file or directory
我相信,星号表示是结束该程序的线程,但我不确定。有人知道该从这里做什么吗?
如果您怀疑存在内存问题,则可以尝试查看资源监视器(例如top)以查看内存使用情况 – Nullman
我已经查看过,并且它永远不会超过32%。我想知道如果也许我正在使用的图书馆之一是调用一个遥不可及的地址?我已经消除了它是cv2的可能性,但我相信我需要其他库才能开始。 – maddmaxamofo
今天,我试着用pygame拍摄并保存图片,并省略了simpleCV。它工作了大约2个小时,然后给了我可怕的致命Python错误:(pygame parachute)分割错误 – maddmaxamofo