Overførsel af billeddata mellem C # og C ++

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder på et projekt, hvor jeg vil oprette en brugergrænseflade i et C # windows-program. Det skal vise et billede. Og jeg vil overføre billeddataene til et C ++-modul, der vil redigere det og derefter returnere resultatet .


Jeg har allerede etableret, hvordan man overfører data mellem C # og C ++ (jeg bruger en C ++ DLL). Mit spørgsmål er: hvilken klasse i C # kan gøre, hvad jeg vil? Jeg har brug for det til at eksportere billeddataene til en slags pixelmatrix (helst med separate RGB-værdier, hver af størrelsen 1 byte=3 byte pr pixel), som jeg kan arbejde med i C ++-modulet. Det skal også kunne importeres resultatet tilbage i objektet og vises i C # -vinduerne applikationsvindue.


Eventuelle ideer, hvilken klasse kan virke bedst for mig?


Tak, Malki.

Bedste reference


Hvis du vil arbejde med pixeldata, som du beskriver, er Bitmap.LockBits metoden for dig.

Andre referencer 1


Ud over danbystroms svar på Bitmap.LockBits vil du gerne se på Marshal-klassen til kopiering af binære data. Kontroller Marshal.Copy-metoden til et eksempel.

Andre referencer 2


Hvad forventer din dlls metode som input parameter (er)?


EDIT: Så vidt jeg ved, skal du i c # gå ind i 'usikker tilstand' for at arbejde med pixels direkte (og hurtigt :)). Noget sådan her. [1]

Andre referencer 3


Som svar på jer alle! :-)


Nej, du behøver ikke nogen marshaling, og du behøver ikke nogen usikker kode, hvis du bare vil overføre pixels til indfødte C ++.


Du kan tjekke dette indlæg, hvor jeg nøjagtigt dette kalder en C ++-funktion, der indeholder håndlavet samlesprog for at gøre noget billedbehandling:


http://danbystrom.se/2008/12/22/optimizing-away-ii/[2]