Seite 4 von 5
Verfasst: 09.03.2009 15:03
von Kaeru Gaman
stell dich doch nich döf!
die Wahl von Motiv, Blickwinkel und Bildausschnitt ist das, was einen Fotografen ausmacht.
Auch bei einer Serienaufnahme muss man das vorab händisch einstellen.
... und auch bei Einzelaufnahmen macht ein Fotograf eine kleine Serie, wo er ein paar Einstellungswerte variiert.
Verfasst: 09.03.2009 15:30
von Falko
+1.
Das hängt auch davon ab, ob die Kamera, eine Steuerung durch den PC
unterstützt.
Bei meiner Samsung Pro815 Digitalkamera ist das leider nicht möglich.
Wenn ich die Möglichkeiten wie bei einer Nicon DXX hätte, würden noch ganz
andere Ideen für Life-Aufnahmen verwirklicht werden können
Gruß, Falko
Verfasst: 09.03.2009 21:34
von bobobo
@KG ich bin es vielleicht

Verfasst: 25.03.2009 21:49
von schic
@chrizl
ich nutze den Nikon SDK für Bewegungserkennung mit der D90 über die Liveview Funktion (Bild für Bild Vergleich in ASM), um bei Bewegung dann ein richtiges Bild zu schießen. Das ganze ist zwar noch im Entwicklungsstadium, aber funktioniert grundsätzlich schon ganz brauchbar.
Um nicht den gesamten Code des im SDK beigelegten Beispiels in PB neue schreiben zu müssen, habe ich aus der Konsolenanwendung kurzerhand das Konsolenzeugs entfernt und den Rest in eine statische LIB kompiliert und kann so, mit Import, die Funktionen und Variablen direkt in PB nutzen. Nur die Funktionen bei denen die Konsolen-Aus/Eingabe des Beispiels nichts hergibt, habe ich nach PB übertragen.
Die bisher wenigen Funktionen des Programms funktionieren mit der D90 und bis auf Liveview, auch mit einer D200 wenn das entsprechende Modul geladen wird. Nur die Auslöseverzögerung nach einer Bewegungserkennung ist leider sehr (zu) lang.
Wenn Du (oder sonst jemand) intersssiert ist, maile ich den vorhanenen Code mit Lib gerne zu. Hier zum posten ist das zu viel, allein die Includes für Konstanten und Variablentypen gehen schon in die 2000 Zeilen.
Außerdem jage ich seit einer Woche erfolglos einem Speicherfehler (wahrscheindlich ein solcher) hinterher und könnte etwas Hilfe und evtl. neue Ideen auch ganz gut gebrauchen
Bist Du inzwischen mit dem WIA-Zeugs zum PC-gesteuerten Fokussieren und Auslösen etc. gekommen? Wenn das geht, wäre es ja auch eine Alternative - wie gesagt, ich kämpfe und hadere zur Zeit etwas mit diesem SDK.
Gruß
schic
PS.: so schaut´s bis jetzt aus...

Verfasst: 26.03.2009 13:43
von chrizl
Hey schic
hab leider keine Nachricht vom PureBoard bekommen, dass du geschrieben hast.
Ich bin leider noch nicht weiter gekommen, mit der WIA leider.
Hab leider nicht viel Zeit gehabt, bzw. auch ne Zeit lang andere Sachen im Kopf gehabt.
Würde mich freuen, wenn du mir den Source zuschicken könntest, dann kann ich mir das ja auch mal alles anschauen und mich da mal richtig einarbeiten.
Die gesamten SDKs habe ich alle hier aufem Laptop.
Das einbinden sollte denke ich mal einfach sein oder?
Dann kann ich das ja mal mit der D60 ausprobieren.
Zwar ohne LiveView, aber vlt. finde ich ja auch noch Möglichkeiten mit der SDK, was für Spielereien man damit anstellen kann.
Verfasst: 27.03.2009 21:13
von schic
@chrizl
ich hoffe der Sourcecode etc. ist gestern brauchbar bei Dir angekommen.
Ich habe jetzt noch die Windows Image Acquisition Library mit den Bespielen aus der Hilfe getestet:
Code: Alles auswählen
XIncludeFile "comate.pbi"
;{- wia constants
; Miscellaneous
#wiaIDUnknown$ = "{00000000-0000-0000-0000-000000000000}"
#wiaAnyDeviceID$ = "*"
; FormatID
#wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
#wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
#wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"
#wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
#wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"
; EventID
#wiaEventDeviceConnected = "{A28BBADE-64B6-11D2-A231-00C04FA31809}"
#wiaEventDeviceDisconnected = "{143E4E83-6497-11D2-A231-00C04FA31809}"
#wiaEventItemCreated = "{4C8F4EF5-E14F-11D2-B326-00C04F68CE61}"
#wiaEventItemDeleted = "{1D22A559-E14F-11D2-B326-00C04F68CE61}"
#wiaEventScanImage = "{A6C5A715-8C6E-11D2-977A-0000F87A926F}"
#wiaEventScanPrintImage = "{B441F425-8C6E-11D2-977A-0000F87A926F}"
#wiaEventScanFaxImage = "{C00EB793-8C6E-11D2-977A-0000F87A926F}"
#wiaEventScanOCRImage = "{9D095B89-37D6-4877-AFED-62A297DC6DBE}"
#wiaEventScanEmailImage = "{C686DCEE-54F2-419E-9A27-2FC7F2E98F9E}"
#wiaEventScanFilmImage = "{9B2B662C-6185-438C-B68B-E39EE25E71CB}"
#wiaEventScanImage2 = "{FC4767C1-C8B3-48A2-9CFA-2E90CB3D3590}"
#wiaEventScanImage3 = "{154E27BE-B617-4653-ACC5-0FD7BD4C65CE}"
#wiaEventScanImage4 = "{A65B704A-7F3C-4447-A75D-8A26DFCA1FDF}"
; CommandID
#wiaCommandSynchronize = "{9B26B7B2-ACAD-11D2-A093-00C04F72DC3C}"
#wiaCommandTakePicture = "{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}"
#wiaCommandDeleteAllItems = "{E208C170-ACAD-11D2-A093-00C04F72DC3C}"
#wiaCommandChangeDocument = "{04E725B0-ACAE-11D2-A093-00C04F72DC3C}"
#wiaCommandUnloadDocument = "{1F3B3D8E-ACAE-11D2-A093-00C04F72DC3C}"
; WiaSubType enumeration
#UnspecifiedSubType = 0
#RangeSubType = 1
#ListSubType = 2
#FlagSubType = 3
; WiaDeviceType enumeration
#UnspecifiedDeviceType = 0
#ScannerDeviceType = 1
#CameraDeviceType = 2
#VideoDeviceType = 3
; WiaItemFlag enumeration
#FreeItemFlag = $0
#ImageItemFlag = $1
#FileItemFlag = $2
#FolderItemFlag = $4
#RootItemFlag = $8
#AnalyzeItemFlag = $10
#AudioItemFlag = $20
#DeviceItemFlag = $40
#DeletedItemFlag = $80
#DisconnectedItemFlag = $100
#HPanoramaItemFlag = $200
#VPanoramaItemFlag = $400
#BurstItemFlag = $800
#StorageItemFlag = $1000
#TransferItemFlag = $2000
#GeneratedItemFlag = $4000
#HasAttachmentsItemFlag = $8000
#VideoItemFlag = $10000
#RemovedItemFlag = $80000000
; WiaPropertyType enumeration
#UnsupportedPropertyType = 0
#BooleanPropertyType = 1
#BytePropertyType = 2
#IntegerPropertyType = 3
#UnsignedIntegerPropertyType = 4
#LongPropertyType = 5
#UnsignedLongPropertyType = 6
#ErrorCodePropertyType = 7
#LargeIntegerPropertyType = 8
#UnsignedLargeIntegerPropertyType = 9
#SinglePropertyType = 10
#DoublePropertyType = 11
#CurrencyPropertyType = 12
#DatePropertyType = 13
#FileTimePropertyType = 14
#ClassIDPropertyType = 15
#StringPropertyType = 16
#ObjectPropertyType = 17
#HandlePropertyType = 18
#VariantPropertyType = 19
#VectorOfBooleansPropertyType = 101
#VectorOfBytesPropertyType = 102
#VectorOfIntegersPropertyType = 103
#VectorOfUnsignedIntegersPropertyType = 104
#VectorOfLongsPropertyType = 105
#VectorOfUnsignedLongsPropertyType = 106
#VectorOfErrorCodesPropertyType = 107
#VectorOfLargeIntegersPropertyType = 108
#VectorOfUnsignedLargeIntegersPropertyType = 109
#VectorOfSinglesPropertyType = 110
#VectorOfDoublesPropertyType = 111
#VectorOfCurrenciesPropertyType = 112
#VectorOfDatesPropertyType = 113
#VectorOfFileTimesPropertyType = 114
#VectorOfClassIDsPropertyType = 115
#VectorOfStringsPropertyType = 116
#VectorOfVariantsPropertyType = 119
; WiaImagePropertyType enumeration
#UndefinedImagePropertyType = 1000
#ByteImagePropertyType = 1001
#StringImagePropertyType = 1002
#UnsignedIntegerImagePropertyType = 1003
#LongImagePropertyType = 1004
#UnsignedLongImagePropertyType = 1005
#RationalImagePropertyType = 1006
#UnsignedRationalImagePropertyType = 1007
#VectorOfUndefinedImagePropertyType = 1100
#VectorOfBytesImagePropertyType = 1101
#VectorOfUnsignedIntegersImagePropertyType = 1102
#VectorOfLongsImagePropertyType = 1103
#VectorOfUnsignedLongsImagePropertyType = 1104
#VectorOfRationalsImagePropertyType = 1105
#VectorOfUnsignedRationalsImagePropertyType = 1106
; WiaEventFlag enumeration
#NotificationEvent = 1
#ActionEvent = 2
; WiaImageIntent enumeration
#UnspecifiedIntent = 0
#ColorIntent = 1
#GrayscaleIntent = 2
#TextIntent = 4
; WiaImageBias enumeration
#MinimizeSize = 65536
#MaximizeQuality = 131072
;}
Define WIA_DeviceManager.COMateObject
Define dev.COMateObject, DeviceInfo.COMateObject, DeviceCommand.COMateObject, DeviceProperty.COMateObject
Define DevInfs.COMateEnumObject, thisDeviceCommands.COMateEnumObject, thisDeviceProperties.COMateEnumObject
WIA_DeviceManager = COMate_CreateObject("WIA.DeviceManager")
If WIA_DeviceManager
Debug "WIA_DeviceManager-Objekt wurde erfolgreich erstellt :-)"
Else
Debug "WIA_DeviceManager-Objekt konnte nicht erstellt werden."
Debug COMate_GetLastErrorDescription()
EndIf
;DeviceManager.DeviceInfos.Count
DeviceInfosCount = WIA_DeviceManager\GetIntegerProperty("DeviceInfos\Count"); just cause we are curious
Debug "DeviceInfosCount: " + Str(DeviceInfosCount)
DevInfs = WIA_DeviceManager\CreateEnumeration("DeviceInfos")
If DevInfs
DeviceInfo = DevInfs\GetNextObject()
While DeviceInfo ;looking for special Device (here D90)
myDevNam$ = DeviceInfo\GetStringProperty("Properties('Name')\Value")
Debug "found " + myDevNam$
If myDevNam$ = "D90" ; here put the string of which camera you ever want to select
dev = DeviceInfo\GetObjectProperty("Connect") ;Establishes a connection with this device
If dev: Break: EndIf
EndIf
DeviceInfo\Release()
DeviceInfo = DevInfs\GetNextObject()
Wend
DeviceInfo\Release()
If dev
Debug "------- with commands:"
; now let´s look which commands are available for our device
thisDeviceCommands = dev\CreateEnumeration("Commands")
DeviceCommand = thisDeviceCommands\GetNextObject()
While DeviceCommand
; dc.CommandID & ", " & dc.Description & ", " & dc.Name
Debug DeviceCommand\GetStringProperty("CommandID")+", " + DeviceCommand\GetStringProperty("Description")+", " + DeviceCommand\GetStringProperty("Name")
DeviceCommand\Release()
DeviceCommand = thisDeviceCommands\GetNextObject()
Wend
Debug "------- and properties:"
; now we look for the properties
thisDeviceProperties = dev\CreateEnumeration("Properties")
DeviceProperty = thisDeviceProperties\GetNextObject()
While DeviceProperty
strInfo$ = DeviceProperty\GetStringProperty("Name")+", (" + Str(DeviceProperty\GetIntegerProperty("PropertyID"))+"), "
If DeviceProperty\GetIntegerProperty("IsVector")
strInfo$ = strInfo$ + "[vector of data]"
Else
If DeviceProperty\GetIntegerProperty("Type") = #StringPropertyType
strInfo$ = strInfo$ + Chr(34) + DeviceProperty\GetStringProperty("Value")+ Chr(34)
Else
strInfo$ = strInfo$ + DeviceProperty\GetStringProperty("Value")
EndIf
EndIf
Debug strInfo$
DeviceProperty\Release()
DeviceProperty = thisDeviceProperties\GetNextObject()
Wend
;now for close, we shoot a picture
StartTime = ElapsedMilliseconds()
dev\invoke("ExecuteCommand('" + #wiaCommandTakePicture +"')")
MessageRequester("Auslöseverzögerung", Str(ElapsedMilliseconds()-StartTime) + " ms", #MB_OK|#MB_ICONINFORMATION)
EndIf
EndIf
; release all objects
thisDeviceProperties\Release()
thisDeviceCommands\Release()
dev\Release()
DevInfs\Release()
WIA_DeviceManager\Release()
funktioniert zwar viel umgänglicher als mit dem SDK von Nikon, aber der Auslösevorgang ist mit > 2400 ms noch mal 1 Sekunde langsamer - nix für Bewegungserkennung mit Fotofalle

Unabhängig davon, dass ich noch nicht herausgefunden habe, wie man auf Liveview umschaltet...
_____________
schic
Re: Nikon SDK für Kamerasteuerung
Verfasst: 20.04.2012 15:31
von tim
Hi,
(bin jetzt mal der Quereinsteiger)
Fotos machen geht schonmal. Jetzt liegen die Fotos auf der Speicherkarte in der Kamera.
Ich komme nur leider nicht dahinter wie ich die Fotos von der Kamera laden kann...
Was ich gern realisieren würde:
- ein Foto machen
- dieses Foto von Speicherkarte auf PC übertragen
- (ggf. Speicherkarte leeren, damit sie nicht überläuft)
Kann mir kurz jemand auf die Schiene helfen?
Gruß
Tim
Re: Nikon SDK für Kamerasteuerung
Verfasst: 20.04.2012 15:37
von Sirius-2337
Die Kamera ist per USB angeschlossen?
Dann müssten die PB-FileSystem Libary (
http://www.purebasic.com/german/documen ... index.html) dafür schon ausreichen.
Re: Nikon SDK für Kamerasteuerung
Verfasst: 20.04.2012 15:38
von chrizl
Hey,
schön, dass sich noch jemand für das Thema interessiert.
Ich muss meine D5000 demnächst auch noch mal testen, ob ich da noch ein bisschen dran machen kann.
In erster Linie würde ich aber sagen, dass es am einfachsten geht, die SD-Karte einfach über den Explorer auszulesen.
Ich selbst habe viel versucht, um die Bilder mit der SDK aus der Kamera zu bekommen.
Vlt. schaffe ich das ja in den nächsten Woche.
Ein schönes Wochenende wünsche ich schon einmal.
Grüße,
Christian
Re: Nikon SDK für Kamerasteuerung
Verfasst: 20.04.2012 16:16
von tim
Hi,
PB-FileSystem Libary
die Idee hatte ich auch schon, nur leider wird
die Kamera nicht als Wechseldatenträger angezeigt.
Gruß
Tim