OpenNI показывает подачу RGB-камеры

Всю последнюю неделю я пытался сделать так, чтобы моя программа C# показывала как канал глубины, так и канал RGB (аналогично тому, как /Samples/Bin64/Release/NiViewer64.exe показывает оба канала в окне).

Спецификации проекта: C# - VS2013 Express OpenNI - Использование модифицированного SimpleViewer.net (имеет два канала глубины). Asus Xtion Pro Live

Я хотел бы, чтобы один из каналов стал обычным каналом камеры вместо канала глубины.

Я предполагаю, что это как-то связано с этим:

MapOutputMode mapMode = this.depth.MapOutputMode;
this.bitmap = new Bitmap((int)mapMode.XRes, (int)mapMode.YRes,System.Drawing.Imaging.PixelFormat.Format24bppRgb);

Любые идеи?


person Christian Fager    schedule 25.02.2014    source источник


Ответы (1)


Наконец-то разобрался, спасибо другому программисту.

            image = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            ImageMetaData imd = image.GetMetaData();


            lock (this)
            {
                //**************************************//
                //***********RGB Camera Feed************//
                //**************************************//
                Rectangle rect = new Rectangle(0, 0, this.bitmap.Width, this.bitmap.Height);
                BitmapData data = this.camera_feed.LockBits(rect, ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

                byte* pDest = (byte*)data.Scan0.ToPointer();
                byte* imstp = (byte*)image.ImageMapPtr.ToPointer();

                // set pixels
                for (int i = 0; i < imd.DataSize; i += 3, pDest += 3, imstp += 3)
                {
                    pDest[0] = imstp[2];
                    pDest[1] = imstp[1];
                    pDest[2] = imstp[0];
                }

и объявить это где-нибудь:

        public ImageGenerator image;
person Christian Fager    schedule 06.03.2014