Создать IntPtr для указанных данных изображения - PullRequest
2 голосов
/ 11 ноября 2011

(Я даже не уверен, как правильно задать этот вопрос, извините. Мои навыки обработки изображений в основном отсутствуют.)

У меня есть функция в библиотеке (а именно bool CLNUIDevice.GetCameraColorFrameRGB32(...) из CL.NUI для чтения данных Kinect), которую я должен передать IntPtr data в качестве аргумента. Полученные данные изображения будут в конечном итоге в этом data.

Я хочу выполнить некоторую обработку изображений с этими данными и отобразить их на экране (в PictureBox, я полагаю).

Когда я передаю переменную, установленную в IntPtr.Zero, она остается 0. Насколько я понимаю, я должен правильно инициализировать data. Мое изображение имеет размер 640х480 пикселей и, судя по примерам, должно иметь PixelFormat.Format32bppPArgb

Как мне инициализировать IntPtr для растрового изображения 640x480 пикселей, которое, кажется, имеет 32 бита на пиксель?

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

Создайте новый объект Bitmap , используя ваши width / height / bpp и указатель данных изображения, переданный через конструктор.

Затем вы можете отобразить это растровое изображение в любом случае.

1 голос
/ 11 ноября 2011
        var bmp = new Bitmap(640, 480, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
        System.Drawing.Imaging.BitmapData bd = null;
        try {
            bd = bmp.LockBits(new Rectangle(Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
            var pointer = bd.Scan0;
            // Make the call, passing *pointer*
            //...
        }
        finally {
            if (bd != null) bmp.UnlockBits(bd);
        }
        // Do something with <bmp>
        //...
0 голосов
/ 11 ноября 2011

Я надеюсь, что эта ссылка поможет вам Использование WritePixels при использовании записываемого растрового изображения из intptr для создания растрового изображения

вы можете изменить это в зависимости от ваших требований ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...