我對覆盆子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