问题
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:
- Select "Project > Import Type Library" from the Menu
- Select ""Microsoft Windows Image Acquisition 1.01 Type Library" from the list
- Choose "Create Unit"
- 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