VARIANT naar figuur (C++ Builder)

Pagina: 1
Acties:

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Ik krijg van een functie een figuur terug in het type VARIANT. Dit figuur wil ik op het scherm tonen (als bitmap bijv.) maar ik weet niet hoe ik dit type moet conventeren naar iets wat ik op het scherm kan tonen.

De functie waarvan ik het figuur terug krijg ziet er als volgt uit:
code:
1
2
long CaptureImage (long lMode, long lMaxTime, long lImageQuality, long *pImageQuality,
VARIANT *pImage)
Ik denk dat het me wel gelukt is om het plaatje te conventeren naar een "BYTE[320 * 240]" missshien is het hiermee mogelijk/makkelijker om het op het scherm te tonen?

Alvast bedank voor jullie reacties!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De eerste stap is te achterhalen wat voor type het hoort te zijn en dan is het een kwestie van typecasten.

We adore chaos because we like to restore order - M.C. Escher


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Misschien dat je een voorbeeld kan geven? Ik zit namelijk al twee dagen van alles te proberen om het aan het werk te krijgen, maar het wil maar niet lukken...
Volgens mij kan ik het alleen met typecasten niet voor elkaar krijgen, of ik doe het verkeerd.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Nee, de zet is aan jouw. Jij weet van die functie af, vertel jij ons maar wat die VARIANT voor type moet zijn. En als het typecasten niet wil lukken moet jij maar de code geven waar je het mee geprobeert hebt.

We adore chaos because we like to restore order - M.C. Escher


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Ok, eerst de beschrijving van de functie:

CaptureImage
long CaptureImage (long lMode, long lMaxTime, long lImageQuality, long *pImageQuality,
VARIANT *pImage)
Description
- Capture the image whose image quality value is greater than the given value by
lImageQuality. The image quality value is the value formerly known as focus value and it ranges from 0 to 100. This function should not be used to capture images for enrollment or recognition. It is used to capture image for image display only. To display live images, llImageQuality should be set to 0.
Input arguments
- lMode:
> RECOGNIZE_MODE(value: 0x100): uses the right and left illuminators to capture
the image. Not used any more.
> ENROLL_MODE(value: 0x200): uses the right illuminator only to capture the image.
- lMaxTime: the max time period to get the iris image whose image quality value is greater than the given value. The unit is millisecond. In order to set 30 seconds, lMaxTime should be set to 30000.
- lInImageQuality: the image quality value of captured iris image should be greater than this value. The range of image quality value is from 0 to 100, so if InImageQuality is set to
100, no image will be captured.
Output arguments
- pImageQuality: the iris image quality value of the captured iris image
- pImage: the captured iris image
Return Value
- 0 for success. Please refer to IADeviceControl error code description.

Nu mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 long lImageQualityOut;
        VARIANT vImage;
        BYTE *pImage;
    BYTE *pOutImage;
        BYTE *pRGBImage;
        Graphics::TBitmap* bmp = new Graphics::TBitmap();

        pImage = new BYTE[IMAGE_SIZE];
        pOutImage = new BYTE[320 * 240];

        VariantInit(&vImage);
        vImage.vt= VT_BYREF|VT_UI1;
        vImage.pbVal = pImage;

        if (intConnected > 0)
        {       DeviceControl1->CaptureImage(0x200,30000,0,&lImageQualityOut,&vImage);
                Convert640x480to320x240(pImage, pOutImage);
                /*Hier wil ik het plaatje dat ik heb geconventeerd naar 320*240 laten zien, en deze code ontbreekt dus*/
                /*Ik krijg namelijk de pImage niet in een plaatje, terwijl dat naar mijn mening wel mogelijk moet zijn*/
                /*Ik heb dingen geprobeerd met bmp die boven is gedeclareerd, en verder nog een aantal andere manieren waarop je een figuur kunt laten zien*/
        }
        else
                MessageBox(NULL, "Open the device first!","Error",MB_OK + MB_ICONWARNING);
}

Links staat de info voor VARIANT vImage, rechts voor pImageOutAfbeeldingslocatie: http://members.home.nl/jkamerling/beide.jpg

Misschien dat je hier wat aan hebt? Bedankt voor je reacties tot dusver en alvast bedankt voor de andere reacties.


B-Man

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Kan iemand me vertellen of je de data die je hierboven ziet op een of andere manier handmatig in een bitmap kunt laden?

Bedankt,
B-Man

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:38
Wat voor een type moet het worden ? Is er een bitmap class in BCB die je kunt initialiseren met rauwe data ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Het moet een 24bits bitmap worden van 320x240.
En ik heb geen idee of je een ruwe bitmap kunt maken. Ik denk het van wel, maar ik kan het niet vinden in de help. Dat ga ik zo even verder uitzoeken... Maar stel dat dat kan?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:38
Wat wil je met die bitmap doen ?

Als je dat ding wilt laten zien in een picturebox oid, moet je er een type van maken ( TBitmap oid, ik ken de VCL niet ) die compatible is met het type wat een picturebox verwacht.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Ik heb het nu (eindelijk) voor elkaar gekregen om het plaatje op het scherm te tonen. Wel is waar in rood kleuren, maar dat krijg ik er nog wel uit. Wat ik nu gedaan heb is pixel voor pixel een waarde in het plaatje gezet. Jullie hebben me dus wel in de juiste richting "gedrukt"!

TNX!!!
Pagina: 1