Ik ben bezig om onder linux een plaatje te capture'n i.c.m. Kylix. (capture kaart en ccd camera)
Dit lukt nu aardig. Ik heb inmiddels het plaatje op het scherm. Echter het probleem is dat als ik het plaatje dat in het geheugen staat in een bitmap wil zetten dit enorm lang duurt met de property Pixels[X Y] := ....
Ik heb daarom gebruik gemaakt van de functie ScanLine. Dit gaat razend snel. Er is alleen 1 probleem. De breedte van het plaatje klopt niet meer.
Weet iemand waar dat door kan komen?
Kylix code:
(Het plaatje dat gecaptured wordt is 8 bits, grijs.)
Dit lukt nu aardig. Ik heb inmiddels het plaatje op het scherm. Echter het probleem is dat als ik het plaatje dat in het geheugen staat in een bitmap wil zetten dit enorm lang duurt met de property Pixels[X Y] := ....
Ik heb daarom gebruik gemaakt van de functie ScanLine. Dit gaat razend snel. Er is alleen 1 probleem. De breedte van het plaatje klopt niet meer.
Weet iemand waar dat door kan komen?
Kylix code:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| Bitmap := TBitmap.Create; try Image1.Width := Capture_Width; Image1.Height := Capture_Height; Bitmap.Width := Capture_Width; Bitmap.Height := Capture_Height; i := Integer(map); for y := 0 to Capture_Height - 1 do begin PSL := BitMap.ScanLine[y]; for x := 0 to Capture_Width - 1 do begin //R := Byte(Ptr(i + 2)^); //G := Byte(Ptr(i + 1)^); B := Byte(Ptr(i)^); //Bitmap.Canvas.Pixels[X, Y] := TColor((B * 65536) + (G * 256) + R); // BGR PSL[X] := TColor((B * 65536) + (B * 256) + B); // BGR i := i + 1; end; end; Image1.Canvas.Draw(0, 0, Bitmap); finally Bitmap.Free; end; |
(Het plaatje dat gecaptured wordt is 8 bits, grijs.)