brüll
July 31, 2006, 12:28:10
Hi,
I got acces to the buffers and pixels with Delphi (Source Code below). Now I would like to ask
1. How gets it faster? I've got better experience with USB Cameras, they are even faster. This TIS devices are ridiculous slow.
2. How can I show extracted Pixel in Realtime on the Overlay Bitmap
3. Are there any drivers for the DFK 41BF02 camera, which can provide RGB24 or UVYV format with 640X480 Pixls in 2x2 binning??
Thanks
DELPHI 7 CODE:
unit uBuffers;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ICImagingControl3_TLB, ComObj, Menus, ExtCtrls;
type
TForm1 = class(TForm)
ICImagingControl1: TICImagingControl;
MainMenu1: TMainMenu;
File1: TMenuItem;
Properties1: TMenuItem;
Settings1: TMenuItem;
Device1: TMenuItem;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Device1Click(Sender: TObject);
procedure Properties1Click(Sender: TObject);
procedure ICImagingControl1ImageAvailable(ASender: TObject;
BufferIndex: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tRGB = record
r,g,b: byte;
end;
var
Form1 : TForm1;
ZoomValue : single;
FrameCount : integer = 0;
CurrentBuffer: ImageBuffer;
OB : OverlayBitmap;
ImageA : array [0..1280, 0..960] of tRGB;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
try
ICImagingControl1.LoadDeviceStateFromFile('device. xml',true);
except
ON EOleException do
begin
ICImagingControl1.ShowDeviceSettingsDialog();
if ICImagingControl1.DeviceValid = TRUE then
begin
ICImagingControl1.SaveDeviceStateToFile('device.xm l');
end;
end;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if ICImagingcontrol1.DeviceValid = True then
begin
{ZoomSettings}
ZoomValue:= ICImagingControl1.LiveDisplayZoomFactor;
ICImagingControl1.LiveDisplayDefault:= false;
//ICImagingControl1.LiveDisplayZoomFactor:= ZoomValue / 2;
// ICIMagingControl1.LiveCaptureContinuous:= true;
{ImageProcSettings}
// MaxY:= ICImagingControl1.ImageHeight - 1;
// MaxX:= ICImagingControl1.ImageWidth - 1;
ICImagingControl1.LiveDisplay:= false;
ICImagingControl1.LiveCaptureLastImage:= false;
ICImagingControl1.LiveCaptureContinuous:= true;
ICImagingControl1.Width:= ICImagingControl1.ImageWidth;
ICImagingControl1.Height:= ICImagingControl1.ImageHeight;
ICImagingControl1.LiveStart();
end;
end;
procedure TForm1.Device1Click(Sender: TObject);
begin
ICImagingControl1.LiveStop;
ICImagingControl1.ShowDeviceSettingsDialog;
ICImagingControl1.LiveStart;
end;
procedure TForm1.Properties1Click(Sender: TObject);
begin
ICImagingControl1.ShowPropertyDialog;
end;
procedure TForm1.ICImagingControl1ImageAvailable(ASender: TObject;
BufferIndex: Integer);
var
x,y,xm,ym : integer;
ImageData : OleVariant;
begin
CurrentBuffer:= ICImagingControl1.ImageActiveBuffer;
ImageData:= CurrentBuffer.GetImageData;
For x:= 0 to ICImagingControl1.ImageWidth - 1 do
For y:= 0 To ICImagingControl1.ImageHeight - 1 do
begin
ImageA[x,y].r:= ImageData[x * 3 + 2, y];
ImageA[x,y].g:= ImageData[x * 3 + 1, y];
ImageA[x,y].b:= ImageData[x * 3 + 0, y];
end;
CurrentBuffer.ReleaseImageData(ImageData);
ICImagingControl1.DisplayImageBuffer(CurrentBuffer );
end;
end.[/SIZE]
I got acces to the buffers and pixels with Delphi (Source Code below). Now I would like to ask
1. How gets it faster? I've got better experience with USB Cameras, they are even faster. This TIS devices are ridiculous slow.
2. How can I show extracted Pixel in Realtime on the Overlay Bitmap
3. Are there any drivers for the DFK 41BF02 camera, which can provide RGB24 or UVYV format with 640X480 Pixls in 2x2 binning??
Thanks
DELPHI 7 CODE:
unit uBuffers;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ICImagingControl3_TLB, ComObj, Menus, ExtCtrls;
type
TForm1 = class(TForm)
ICImagingControl1: TICImagingControl;
MainMenu1: TMainMenu;
File1: TMenuItem;
Properties1: TMenuItem;
Settings1: TMenuItem;
Device1: TMenuItem;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Device1Click(Sender: TObject);
procedure Properties1Click(Sender: TObject);
procedure ICImagingControl1ImageAvailable(ASender: TObject;
BufferIndex: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tRGB = record
r,g,b: byte;
end;
var
Form1 : TForm1;
ZoomValue : single;
FrameCount : integer = 0;
CurrentBuffer: ImageBuffer;
OB : OverlayBitmap;
ImageA : array [0..1280, 0..960] of tRGB;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
try
ICImagingControl1.LoadDeviceStateFromFile('device. xml',true);
except
ON EOleException do
begin
ICImagingControl1.ShowDeviceSettingsDialog();
if ICImagingControl1.DeviceValid = TRUE then
begin
ICImagingControl1.SaveDeviceStateToFile('device.xm l');
end;
end;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if ICImagingcontrol1.DeviceValid = True then
begin
{ZoomSettings}
ZoomValue:= ICImagingControl1.LiveDisplayZoomFactor;
ICImagingControl1.LiveDisplayDefault:= false;
//ICImagingControl1.LiveDisplayZoomFactor:= ZoomValue / 2;
// ICIMagingControl1.LiveCaptureContinuous:= true;
{ImageProcSettings}
// MaxY:= ICImagingControl1.ImageHeight - 1;
// MaxX:= ICImagingControl1.ImageWidth - 1;
ICImagingControl1.LiveDisplay:= false;
ICImagingControl1.LiveCaptureLastImage:= false;
ICImagingControl1.LiveCaptureContinuous:= true;
ICImagingControl1.Width:= ICImagingControl1.ImageWidth;
ICImagingControl1.Height:= ICImagingControl1.ImageHeight;
ICImagingControl1.LiveStart();
end;
end;
procedure TForm1.Device1Click(Sender: TObject);
begin
ICImagingControl1.LiveStop;
ICImagingControl1.ShowDeviceSettingsDialog;
ICImagingControl1.LiveStart;
end;
procedure TForm1.Properties1Click(Sender: TObject);
begin
ICImagingControl1.ShowPropertyDialog;
end;
procedure TForm1.ICImagingControl1ImageAvailable(ASender: TObject;
BufferIndex: Integer);
var
x,y,xm,ym : integer;
ImageData : OleVariant;
begin
CurrentBuffer:= ICImagingControl1.ImageActiveBuffer;
ImageData:= CurrentBuffer.GetImageData;
For x:= 0 to ICImagingControl1.ImageWidth - 1 do
For y:= 0 To ICImagingControl1.ImageHeight - 1 do
begin
ImageA[x,y].r:= ImageData[x * 3 + 2, y];
ImageA[x,y].g:= ImageData[x * 3 + 1, y];
ImageA[x,y].b:= ImageData[x * 3 + 0, y];
end;
CurrentBuffer.ReleaseImageData(ImageData);
ICImagingControl1.DisplayImageBuffer(CurrentBuffer );
end;
end.[/SIZE]