How to control a camera with Delphi

久未见 提交于 2019-12-18 17:29:46

问题


A Delphi programm should make produkt photos with a Nikon D5000AF SDX. The only commands I need are "make a photo", "get me the photo".

Which library or API can help me?


回答1:


@Heinz, to control a device you must use an SDK, which must be supplied by the manufacturer of the device.

from the nikon site :

....We are offering Library Programs and Command API Specifications for software applications that offer remote control functions for Nikon digital-SLR cameras connected to a computer. When these are utilized, the software application can be used to modify camera settings, including shutter speed, aperture, and ISO sensitivity, and to control camera operations, including shutter release.

in this page you can find the SDK for the Nikon cameras, including the D5000 series.

Bye.




回答2:


I would advise using the WIA (Windows Image Acquisition) API. For this you need the file "WIALib_TLB.pas" which will be created by Delphi automatically when following these steps:

  1. Select "Project > Import Type Library" from the Menu
  2. Select ""Microsoft Windows Image Acquisition 1.01 Type Library" from the list
  3. Choose "Create Unit"
  4. You will then get the unit "WIALib_TLB.pas"

Use the code from the following URL to see how you can enumerate the available devices and their properties and take a snapshot with the camera.

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

Sorry, the comments are in German, but I think the code is easy to understand




回答3:


  • you can use wia (windows image acquisition)
  • from component menu select import component and select windows image acquisition and install it
  • or download and add to your project
  • then
  • if you are use win xp
  • start new project and put
  • new Button named Button1
  • new CheckBox named MultiPic
  • and copy the cod and past in Button1

the cod:

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 use CheckBox to for user Determine if he want 1 picture or multi pictures

  • you can load the Picture/s to image by loadfromfile



来源:https://stackoverflow.com/questions/2012630/how-to-control-a-camera-with-delphi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!