2012-03-28 4 views
1

Ich habe ein UInt16 Array, das ein Bild und Breite/Höhe dafür darstellt, und ich würde dies auf die schmerzloseste Weise in ein EMGU Bild verwandeln.UInt16 [] nach EMGU Bild in C#

EMGU hat einen Image Konstruktor, der vielversprechend aussieht, der here beschrieben wird.

Aber ich kann nicht verstehen, wie man meine Daten formatiert, es sagt, dass die erste Dimension Höhe ist, aber warum würde ich eine ganze Dimension brauchen, um EINE Zahl zu beschreiben? Offensichtlich gibt es etwas, was ich nicht verstehe. Etwas wie Image(ushort[], height, width) macht mehr Sinn für mich.

+0

Dies ist der Wrapper einer C lib, daher sind die Argumente gleich. In C-Arrays sind Zeiger ohne Längenangabe. – weismat

+0

Nein, die Argumente sind nicht gleich, C hat nicht einmal Konstruktoren, also wie könnten sie sein? –

Antwort

0

Nach der Dokumentation benötigen Sie zur Verfügung zu stellen:

data 
Type: TDepth[,,] 
The multi-dimensional data 

, wo die erste Dimension Anzahl der Zeilen (Höhe) ist,
die 2. Dimension # cols ist (Breite) und
die 3. Dimension ist der Kanal.

Sie müssen also nur ein Objekt erstellen (sagen Sie Multidimensional Array), und legen Sie die drei Eigenschaften fest: Höhe, Breite, Kanal. Etwas wie folgt aus:

UInt16[,,] depth = new UInt16[, , ] { { height }, { width }, { data } }; 

und data - Array mit Bilddaten.