View Full Version : Serial Key

April 19, 2004, 20:10:14
Hi, I'm using IC1 for image processing. For programming purposes I'm using Delphi 7 with no problems because I'm able to translate your code from VB to Delphi. My problem now is that I have read that trying to make advanced image processing using a Visual tool can be very time consuming so I'm trying to use Visual C++ for creating some DLL's and then use them in my Delphi environment... my firts question is... Is this approach posible?. Second thing, I'm Using "IC Imaging Control 1.41" software but I have no idea if this is a trial version or a purchasing one, I have made a very hard search for the version I'm using but I got nothing, How can I know what version I'm using? I mean the person that installed the imaging software it isn't by here so I can't ask him.

One last question. I have no experienced programming in Visual C++, Can I with your Class Library User's Guide have enought for doing advanced image processing? For instance, I'm going to do an image segmentation, edge detection, pattern recognition.

Thanks a lot for your help.

Stefan Geissler
April 20, 2004, 07:44:39

If no trial dialog pops up every 15 minutes, you do not have a trial version of IC Imaging Control.

The approach of using a DLL written in C in your Delphi project is a usable idea.
The class library of IC Imaging Control provides access to the image data, but no image processing functions like edge detection. In this case a C++ DLL would not be a better approach than a Delphi programm.

The following Delphi code snipped show how to access the image data, that are delivered by the ImageBuffer (Memorybuffer):

procedure TForm1.ICImagingControl1ImageAvailable(ASender: TObject;
BufferIndex: Integer);

var CurrentBuffer: ImageBuffer;
ImageData: OleVariant;


CurrentBuffer:= ICImagingControl1.ImageBuffers.Item[BufferIndex];

ImageData:= CurrentBuffer.GetImageData;


(* pPixel points directly to the beginning of the image pixel data *)


ICImagingControl1.DisplayImageBuffer(CurrentBuffer );


April 20, 2004, 17:31:53
Ok, I was asking you for the serial Key because I was thinking in working with Visual C++ but now that you have told me that is the same thing using the Delphi code you sent me I'm gonna try to make image processing. I have this idea, and I would really appreciate your comments:

Getting the actual image and lock it for processing purpose, then using the pointer access your Delphi code uses, make image processing but I would like to view the result image, how can I make the DisplayImageBuffer event to do this thing???

I can see that you're accessing to the image by using a pointer to the beggining of the image pixel data, Can you please tell me what kind of information you get? I mean maybe you get its RGB value.


Stefan Geissler
April 22, 2004, 07:27:22

If you want to see the results in the IC Imaging Control window of your application, you must avoid the live display. Set the property "LiveDisplay" to false. Then the code above should display your manipulated image buffer.

The pointer to the image data points to the first byte in the last line of your image. The images are stored bottom down. The pixel format depends on the MemoryCurrentGrabberColor setting. It is RGB24 by default. This means, the pixels are stored as BGR . Each pixel allocates 3 bytes.

May 7, 2004, 17:16:31
Hi again, I have been reviewing the delphi code you sent me, as I can see the thing you have is just a pointer of POINTER type to the beginning of the image. OK, I would like to access the data held by the pointer for instance I declare a variable called SUM of EXTENDED type but when trying to do SUM:=pPixel^ I get an error ('Extended' and 'procedure', untyped pointer or untyped parameter'). What should I do for this error?. Another related question, How can I access all the pixels using a FOR statement?.

About displaying the content of a IC control to a Picture Box in Delphi 7, Do you have an example?

Thanks a lot for your help.

Stefan Geissler
May 10, 2004, 08:16:26

This sample was provided by one of our customers. I have to Delphi experiences. Therefore i am afraid i can not help you in this issue. May be some of the other Delphi programmers in this forum can help you.

Please remark, pPixel is a pointer to a BYTE value (unsigned char) I do not know, how to convert a unsigned char to to an int value in Delphi.

Using a for loop should be easy. You now the number of lines, of pixels per line and number of bytes ber pixel (3 at RGB 24). With this information you may setup two loops:
for( lines = 0; lines < 480; lines++)
for( cols = 0; cols < 640; cols += 3)
blue = (int)pPixel[0];
green = (int) pPixel[1];
red = (int) pPixel[2];
pPixel += 3;

This would be a loop in C for a 640*480 RGB 24 image.