Seite 1 von 1

Timelapse mit Problemen

Verfasst: Montag 17. März 2014, 16:41
von MasterS2301
Liebes Forum,
erstmal was zu mir, ich habe mir vor 2 Wochen einen Raspberry Pi zugelegt um meiner alten Nikon D40 die Interval Fotographie beizubringen. Im Rahmen dessen hab ich festegestellt das, Geschwindigkeit hin oder her, Python die für mich einfachste Methode ist an die Sache ran zu gehen. Hab in den letzten 2 Wochen viel gelesen, gelernt und wieder vergessen.
Auf jedenfall hab ich es mit zurhilfenahme von vorhandenen Programmen (gPhoto, Piggyphoto) geschafft mir etwas zu bauen was meinen ansprüchen nach so kurzer zeit schonmal nah kommt.
Kann nen Intervall benennen, die Anzahl der Bilder, kann nen Motor ansteueren (um die Kamera auf ner Rail laufen zu lassen) und so weiter.
Mein Problem ist das die entstehenden Fotos auf den Pi runtergeladen werden, ich würde diese jedoch lieber auf der Kamera belassen da die nachbearbeitung am Laptop stattfindet.

Wie kann ich also meinem Program sagen das es die Fotos auf der Kamera belassen soll?

Zum Code, leider unübersichtlich da ich mit der Modularisierung noch am kämpfen bin...

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Timelapse knipPI + Motor

# Import Module
import time
import piggyphoto
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

# Verwendete Pins am Rapberry Pi
A1=18
B1=23
C1=24
D1=25

# Eingabe durch Nutzer
#	Kamera
interval = input ("Interval  ")
bilder = input ("Bilder  ")
klicks = 0
#	Motor
motor_start = input ("Start Motor  ")
motor_ende = input("Motor ende  ")
motor_div = motor_ende-motor_start

timest = 0.005
steps = input ("Steps  ")

stpp = steps/motor_div

# Pins aus Ausgänge definieren
GPIO.setup(A1,GPIO.OUT)
GPIO.setup(B1,GPIO.OUT)
GPIO.setup(C1,GPIO.OUT)
GPIO.setup(D1,GPIO.OUT)
GPIO.output(A1, False)
GPIO.output(B1, False)
GPIO.output(C1, False)
GPIO.output(D1, False)

# Schritte 1 - 8 festlegen
def Step1():
    GPIO.output(D1, True)
    time.sleep (timest)
    GPIO.output(D1, False)

def Step2():
    GPIO.output(D1, True)
    GPIO.output(C1, True)
    time.sleep (timest)
    GPIO.output(D1, False)
    GPIO.output(C1, False)

def Step3():
    GPIO.output(C1, True)
    time.sleep (timest)
    GPIO.output(C1, False)

def Step4():
    GPIO.output(B1, True)
    GPIO.output(C1, True)
    time.sleep (timest)
    GPIO.output(B1, False)
    GPIO.output(C1, False)

def Step5():
    GPIO.output(B1, True)
    time.sleep (timest)
    GPIO.output(B1, False)

def Step6():
    GPIO.output(A1, True)
    GPIO.output(B1, True)
    time.sleep (timest)
    GPIO.output(A1, False)
    GPIO.output(B1, False)

def Step7():
    GPIO.output(A1, True)
    time.sleep (timest)
    GPIO.output(A1, False)

def Step8():
    GPIO.output(D1, True)
    GPIO.output(A1, True)
    time.sleep (timest)
    GPIO.output(D1, False)
    GPIO.output(A1, False)


print ("Aufnahmedauer "), interval*bilder, ("s")
time.sleep (2)

# Kamera Kontrolle
C = piggyphoto.camera() 
print C.abilities

while bilder != klicks:
		
	C.capture_image('snap'+ str(klicks)+ '.jpg')
	
	print ("KLICK", klicks,)
	
	klicks = klicks + 1	

	time.sleep (interval)

	if motor_start <= klicks and motor_ende >= klicks:
		#print ("MOVE")
		# Volle Umdrehung    
		for i in range (stpp):    
			Step1()
			Step2()
			Step3()
			Step4()
			Step5()
			Step6()
			Step7()
			Step8()  
			print i

GPIO.cleanup()
print klicks, ("Aufnahmen")
print ("FERTIG")

Re: Timelapse mit Problemen

Verfasst: Montag 17. März 2014, 17:00
von Leonidas
Dem Sourcecode von piggyphoto nach würde ich versuchen einfach keinen Pfad an ``capture_image`` zu geben, dann sollte er das Foto (vermutlich) nicht runterladen. Habe keine Lust meine D5100 anzustecken um das tatsächlich zu testen ;-)

Re: Timelapse mit Problemen

Verfasst: Montag 17. März 2014, 17:59
von MasterS2301
Ohne pfadangabe lädt er die Bilder sauber nummeriert auf den pi runter, in den Programm Pfad. Kann in der __init__ den Befehl nachvollziehen, die Angabe eines Pfades ist anscheinend auch möglich wie dieser jedoch aussehen muss ist mir noch nicht klar.

PS: oder meinste capture_image() ?!

Re: Timelapse mit Problemen

Verfasst: Dienstag 18. März 2014, 02:01
von Leonidas
MasterS2301 hat geschrieben:PS: oder meinste capture_image() ?!
Da muss ich wiederrum fragen: Wie meinst du das?

Wenn ich mir die Implementation von camera.capture_image ansehe, dann könnte es sein, dass er die Fotos auf der SD-Karte lässt, wenn man ``destpath`` als ``None`` beläst. Aber da bin ich mir nicht ganz sicher, weil ich nicht weiß was ``CameraFilePath`` genau macht. Und ob das überhaupt geht, wenn die Kamera tethered ist, auf die SD-Karte zu schreiben. Wie gesagt, ich habe das nie gemacht, ich versuche nur den Quellcode zu deuten. Aber das sieht durchaus so aus dass er das erst auf SD-Karte schreibt und dann runterlädt. Und runterladen scheint die Originaldatei zu löschen.

Re: Timelapse mit Problemen

Verfasst: Dienstag 18. März 2014, 20:35
von MasterS2301
Hatte gehofft das durch das leer lassen der Klammer die Fotos auf die sd geschrieben werden.
Gphoto, auf dem das ganze ja aufbaut, bietet die Möglichkeit sich zu entscheiden wie mit neuen Aufnahmen umgegangen wird, das wurde aber anscheint nicht mit impliziert.
Camera_path bezieht sich meiner Meinung nach nur auf die gphoto Lib in der die Camera Modelle hinterlegt sind, die Befehle welche die Kamera ansprechen sind glaube ich erst nach Zeile 300 definiert. Kann mich natürlich mit meinem Viertel-Wissen auch stark täuschen :-)
Werde das ganze gleich mal testen.
Bin ja nach so kurzer zeit froh das dass ganze an sich schonmal läuft und das Problem mit den Aufnahmen erstmal rudimentär ist.

Re: Timelapse mit Problemen

Verfasst: Dienstag 18. März 2014, 20:43
von Leonidas
MasterS2301 hat geschrieben:Hatte gehofft das durch das leer lassen der Klammer die Fotos auf die sd geschrieben werden.
Achso. Ja, genauso meinte ich das.