2010-01-06 14 views
3

Un programme Delphi devrait faire des photos produkt avec un Nikon D5000AF SDX. Les seules commandes dont j'ai besoin sont "faites une photo", "obtenez-moi la photo".Comment contrôler une caméra avec Delphi

Quelle bibliothèque ou API peuvent m'aider?

Répondre

11

@Heinz, pour contrôler un appareil, vous devez utiliser un SDK, qui doit être fourni par le fabricant de l'appareil.

du site nikon:

.... Nous offrons des programmes Bibliothèque et API spécifications de commandes pour applications logicielles qui offrent fonctions de contrôle à distance pour Nikon appareils photo numériques reflex connectés à un ordinateur. Lorsque ceux-ci sont utilisés, l'application peut être utilisée pour modifier les paramètres de l'appareil photo, y compris la vitesse d'obturation , l'ouverture et la sensibilité ISO , ainsi que pour contrôler les opérations de la caméra , y compris le déclenchement de l'obturateur.

en this page vous pouvez trouver le SDK pour les appareils photo Nikon, y compris la série D5000.

Salut.

+0

Merci, je donwload le SDK . Mais je cherche un moyen plus simple. En ce moment je regarde "Windows Image Acquisition". –

+0

Parce que la solution WIA ne fonctionne pas, je regarde de plus près le SDK. Existe-t-il un wrapper delphi pour le SDK? –

8

Je vous conseille d'utiliser l'API WIA (Windows Image Acquisition). Pour cela, vous avez besoin du fichier « WIALib_TLB.pas » qui seront créés par Delphi automatiquement, procédez comme suit:

  1. Sélectionnez « Projet> Importer la bibliothèque de type » à partir du menu
  2. Sélectionnez « » Image Microsoft Windows Acquisition 1.01 type de bibliothèque » dans la liste
  3. Choisissez « Créer une unité »
  4. vous obtiendrez alors l'unité « WIALib_TLB.pas »

Utilisez le code de l'URL suivante pour voir comment vous pouvez énumérer le succès appareils compatibles et leurs propriétés et prendre un instantané avec l'appareil photo.

http://www.neunbeere.de/UseNet/WIA.html

Désolé, les commentaires sont en allemand, mais je pense que le code est facile à comprendre

+0

Merci, j'ai compilé votre source. Je reçois les propriétés de l'appareil photo, je peux transférer des photos de l'appareil photo, mais aucune image n'est renvoyée après l'appel TakePicture (Appareils photo: Canon Powershout 520, Nikon D5000). D'autres programmes WIA ont les mêmes problèmes. Des idées? –

+3

TakePicture est pour les webcams, c'est-à-dire pour les caméras où l'image de la caméra est transférée à l'ordinateur en direct. TakePicture signifie prendre un instantané juste au moment où vous appelez la méthode. La plupart des caméras digitales normales qui ne sont pas des webcams ne vous permettent pas de prendre des photos lorsque l'appareil photo est connecté à l'ordinateur. Vous ne pouvez accéder qu'aux images déjà stockées sur l'appareil photo. – NineBerry

+1

On dirait que le demandeur doit être capable de déclencher la prise de photos de l'appareil photo. – Luke

1
  • vous pouvez utiliser WIA (Windows acquisition d'images)
  • à partir du menu de sélection d'appareil composant d'importation et sélectionnez windows image acquisition et l'installer
  • ou download et ajouter à votre projet
  • puis
  • si vous êtes gagnant utiliser XP
  • démarrer un nouveau projet et mettre
  • nouveau bouton nommé Button1
  • nouveau CheckBox nommé MultiPic
  • et copiez le cabillaud et passé Button1

la morue:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    wia:IWia; 
    WiaInf: IWiaDeviceInfo; 
    wiaImg: IWiaDispatchItem; 
    I:integer; 
    Coll: ICollection; 
begin 
    wia:=CoWia.Create; 
    WiaInf:= WIA.Devices.Item[0] as IWiaDeviceInfo; 
    wiaImg:=WiaInf.Create; 
    if MultiPic.Checked then 
    begin 
    coll:=wiaImg.GetItemsFromUI(UseCommonUI, MaximizeQuality); 
    for I := 0 to coll.Count - 1 do 
     begin 
     wiaImg:=coll.Item[i] as IWiaDispatchItem ; 
     wiaImg.Transfer('C:\Source\test'+inttostr(i)+'.bmp',false); 
     end; 
    end 
    else 
    begin 
    wiaImg:=wiaImg.GetItemsFromUI(SingleImage, MaximizeQuality).Item[0] as IWiaDispatchItem ; 
    wiaImg.Transfer('C:\Source\test.bmp',false); 
    end; 
end; 
  • i utiliser CheckBox pour l'utilisateur Déterminer s'il veut une image ou plusieurs images

  • vous pouvez charger l'image/s à l'image par LoadFromFile

Questions connexes