2012-02-23 4 views
0

J'écris une couche d'interopérabilité C++/Cli qui se trouve entre une bibliothèque native fournissant une image lue à partir du disque en utilisant opencv. La couche d'interopérabilité doit convertir l'image en bitmap géré, puis l'envoyer à un C# ui.
La conversion réelle est triviale en copiant la mémoire. Le problème est, cette application doit traiter de nombreuses grandes images, de sorte qu'il est très gourmand en ressources. Pour cette raison, je voudrais éviter de conserver deux copies de l'image en mémoire, et plutôt réattribuer le pointeur aux données d'image dans le bitmap géré pour pointer vers les données d'image ouvertes. Ma première pensée était que je pouvais simplement verrouiller le bitmap géré et assigner le pointeur Scan0 au pointeur opencv, puis m'assurer que le Stride était réglé sur widthStep de l'image opencv (j'utilise un IplImage normal), mais quand je Pour ce faire, l'image qui en sort est complètement noire.
Est-il possible de créer un bitmap géré sans y copier les données d'image natives?Bitmap géré et gestion de la mémoire

Merci,
Max

Répondre