Как исправить ошибку сегментации для Google Cloud Vision?

Я использую Google Cloud Vision API для обнаружения захваченного изображения, снятого с камеры Pi, и если изображение определено как животное, оно удалит изображение, а если это не так, оно запустит другую функцию, называемую: takePicture (image_name). Мой сценарий работает абсолютно хорошо, но в большинстве случаев у меня возникает странная проблема под названием Ошибка сегментации, и когда это происходит, моя программа Python не прерывается, но моя клавиатура 4x4 (подключенная к RPi) перестает работать, а также автоматически создать еще один процесс цикла программы Python, который все еще работает даже с "прерыванием клавиатуры".

def detectImage(self, image_name):
        path = '/home/pi/homesecurity/pictures/' + image_name
        max_results=1
        with open(path, 'rb') as image_file:
            content = image_file.read()
        image = vision.types.Image(content=content)
        objects = client.object_localization(image=image,max_results=max_results).localized_object_annotations
        for object_ in objects:
           if (object_.name == 'Animal' or object_.name == 'Cat' or object_.name == 'Dog' or object_.name == 'Bird' or object_.name == 'Insect'):
             print ('False Alarm: This is an animal!')
             os.remove('/home/pi/homesecurity/pictures/' + image_name) #Deletes the taken picture.
             print 'File', image_name, 'has beeen deleted'
             break
           else:
             Process(target=interact().takePicture(image_name)).start()
             print('Not an animal!')

Можно ли из старого железа? потому что я использую Raspberry Pi Model B и python 2.7

pi@raspberrypi:~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2835
Revision        : 000e
Serial          : 0000000095fec982

pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

person JohnnySnake    schedule 10.07.2019    source источник


Ответы (1)


Ошибки сегментации возникают, когда ваша программа Python пытается использовать недоступную память. Это означает, что у него нет запрошенных ресурсов.

Ознакомьтесь с этим ответом и попытайтесь выяснить, в какой момент это происходит. Я думаю, это может быть из-за низкой вычислительной мощности, которую предоставляет ваш Raspberry Pi. Возможно, вы сможете выделить больше с помощью этого.

person Patrick_Weber    schedule 18.07.2019
comment
Я использую: ulimit -s 16384, который является максимальным, но не устранил ошибку сегментации. - person JohnnySnake; 26.07.2019