Я пишу слой взаимодействия C ++ / Cli, который находится между собственной библиотекой, предоставляющей изображение, считываемое с диска с использованием opencv. Слой взаимодействия должен преобразовать изображение в управляемое растровое изображение, а затем отправить его на C # UI.
Фактическое преобразование тривиально, копируя память. Проблема в том, что это приложение должно обрабатывать много больших изображений, поэтому оно очень ресурсоемкое. Из-за этого я хотел бы избежать хранения двух копий изображения в памяти и скорее переназначить указатель на данные изображения в управляемом растровом изображении, чтобы указывать на данные изображения opencv.
Сначала я думал, что могу просто заблокировать управляемое растровое изображение и назначить указатель Scan0 указателю opencv, а затем убедиться, что для параметра Stride установлено значение widthStep изображения opencv (я использую обычный IplImage), но когда я делаю это полученное изображение полностью черное.
Есть ли способ создать управляемое растровое изображение без копирования в него данных собственного изображения?
Спасибо,
Max