Я довольно новичок как в малине pi, так и в python. Я написал код для анализа изображения, но я продолжаю получать фатальную ошибку python: (pygame parachute) Segmentation Fault. Обычно это происходит от 15 минут до часа в моей программе. Из того, что я прочитал, это, как правило, какая-то проблема с избыточной памятью. Я не нашел конкретных ответов, которые смогли решить мою проблему. Вот мой код. Пожалуйста помоги. Кто-нибудь имеет какие-либо советы о том, как исправить или отладить эту проблему?Неустранимая ошибка python: (pygame parachute) Ошибка сегментации
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 и сделать трассировку, я получаю дефект сегментации с немного большим количеством 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. Я печатаю Информация темы, и я получаю ...
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
Я считаю, что звездочка означает, что поток, который закончил программу, но я не уверен. Кто-нибудь знает, что делать дальше?
Если вы подозреваете проблему с памятью, вы можете попробовать посмотреть монитор ресурсов, такой как верхний, чтобы увидеть использование памяти – Nullman
Я посмотрел на это, и он никогда не становится выше 32%. Мне интересно, может быть, одна из библиотек, которые я использую, вызывает адрес, который недоступен? Я исключил возможность, что это cv2, но я считаю, что мне нужны другие библиотеки, чтобы начать. – maddmaxamofo
Сегодня я попытался взять и сохранить изображение с pygame и пропустить simpleCV. Он проработал около 2 часов, а затем дал мне ужасную ошибку Fatal Python: (pygame parachute) Ошибка сегментации – maddmaxamofo