Timelapse mit Problemen

Du hast eine Idee für ein Projekt?
Antworten
MasterS2301
User
Beiträge: 3
Registriert: Montag 10. März 2014, 15:52

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")
Zuletzt geändert von Leonidas am Montag 17. März 2014, 16:54, insgesamt 1-mal geändert.
Grund: Code in Python-Tags gesetzt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 ;-)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MasterS2301
User
Beiträge: 3
Registriert: Montag 10. März 2014, 15:52

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() ?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MasterS2301
User
Beiträge: 3
Registriert: Montag 10. März 2014, 15:52

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten