Seite 4 von 5

Verfasst: 09.03.2009 15:03
von Kaeru Gaman
stell dich doch nich döf! Bild

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 :mrgreen:

Gruß, Falko

Verfasst: 09.03.2009 21:34
von bobobo
@KG ich bin es vielleicht :wink:

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 :wink:

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...
Bild

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