Vorweg: Bin Anfänger was Python angeht und fuchse mich da grad bis rein. Komm eher aus der Automatisierungsecke und schieb eigentlich einzelne bits durch die Gegend
Projektbeschreibung:
Raspi mit der Raspicam HD über nem Prüfplatz
Während der Ruhephase soll das aktuelle Bild der Kamera Live auf nem Bildschirm angezeigt werden
Bei Tastendruck eines Tasters der per GPIO angeschlossen ist soll ein Bild in voller größe aufgenommen werden
Dannach soll ein Zeitstempel oben links ins Bild mit rein
Per Pygame lass ich das fertige Bild mal für 10 sekunden anzeigen und dannach wieder ab in den Vorschaubetrieb
Hier mein aktuelles Problem:
Aus unerklärlichen Gründen schmeißt es mir nach unterschiedlicher zeit das Script raus und ich muss den Raspi neu starten. Neustart des scriptes per cronjob und überprüfung ob Prozess noch da ist geht irgendwie auch nicht richtig.
Code: Alles auswählen
import os
import time
import RPi.GPIO as GPIO
import socket
import sys
import argparse
import pygame
from picamera import PiCamera
from datetime import datetime
from PIL import Image, ImageFont, ImageDraw
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)
camera = PiCamera()
camera.resolution = (4056, 3040)
camera.start_preview()
camera.rotation = 180
camera.preview_fullscreen = False
camera.preview.window = (320, 300, 1280, 768)
while 1:
try:
time.sleep(0.2)
if GPIO.input(7) == GPIO.HIGH:
datetime_string = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
datetime_string_pic = datetime.now().strftime("%Y-%m-%d_%H:%M")
filename = "/home/pi/server/%s_mpad.jpg" % datetime_string
camera.capture('temp.jpg')
my_image = Image.open("temp.jpg")
font = ImageFont.truetype("FreeSerifBold.ttf", 80)
image_editable = ImageDraw.Draw(my_image)
image_editable.text((15,15), datetime_string_pic, (255, 0, 0), font)
my_image.save(filename)
camera.stop_preview()
pygame.display.init()
imgSurf = pygame.image.load (filename)
imgSurf = pygame.transform.scale( imgSurf, (1441, 1080))
screen = pygame.display.set_mode ( imgSurf.get_size(), pygame.FULLSCREEN )
screen.blit ( imgSurf, ( 0, 0 ) )
pygame.display.flip()
time.sleep(10)
pygame.quit()
camera.start_preview()
camera.rotation = 180
camera.preview_fullscreen = False
camera.preview.window = (320, 300, 1280, 768)
time.sleep(5)
except:
print "Irgendein Fehler:", sys.exc_info()[0]
raise
Wäre auf jeden Fall für jeden Schubser in die richtige Richtung Dankbar