Example #1
0
        private static unsafe SoftwareBitmap MatToSoftwareBitmap(this Mat input)
        {
            try
            {
                SoftwareBitmap output = new SoftwareBitmap(BitmapPixelFormat.Bgra8, input.Width, input.Height, BitmapAlphaMode.Premultiplied);

                using (BitmapBuffer Buffer = output.LockBuffer(BitmapBufferAccessMode.ReadWrite))
                    using (Windows.Foundation.IMemoryBufferReference Reference = Buffer.CreateReference())
                    {
                        ((IMemoryBufferByteAccess)Reference).GetBuffer(out byte *DataInBytes, out uint capacity);
                        BitmapPlaneDescription BufferLayout = Buffer.GetPlaneDescription(0);

                        for (int i = 0; i < BufferLayout.Height; i++)
                        {
                            for (int j = 0; j < BufferLayout.Width; j++)
                            {
                                int Index = BufferLayout.StartIndex + (BufferLayout.Stride * i) + (4 * j);

                                DataInBytes[Index]     = input.DataPointer[Index];
                                DataInBytes[Index + 1] = input.DataPointer[Index + 1];
                                DataInBytes[Index + 2] = input.DataPointer[Index + 2];
                                DataInBytes[Index + 3] = input.DataPointer[Index + 3];
                            }
                        }
                    }

                return(output);
            }
            catch
            {
                return(new SoftwareBitmap(BitmapPixelFormat.Bgra8, input.Width, input.Height, BitmapAlphaMode.Premultiplied));
            }
        }
        internal unsafe VisualizationData(AudioFrame frame)
        {
            m_Buffer          = frame.LockBuffer(AudioBufferAccessMode.Read);
            m_BufferReference = m_Buffer.CreateReference();
            byte *pData;
            uint  capacity;

            ((IMemoryBufferByteAccess)m_BufferReference).GetBuffer(out pData, out capacity);
            m_pData        = (float *)pData;
            m_DataCapacity = m_Buffer.Length / sizeof(float);

            m_DataStep = (uint)frame.ExtendedProperties["{3F692E37-FC20-48DD-93D2-2234E1B1AA23}"];
        }
Example #3
0
        private static unsafe Mat SoftwareBitmapToMat(this SoftwareBitmap softwareBitmap)
        {
            try
            {
                using (BitmapBuffer Buffer = softwareBitmap.LockBuffer(BitmapBufferAccessMode.Write))
                    using (Windows.Foundation.IMemoryBufferReference Reference = Buffer.CreateReference())
                    {
                        ((IMemoryBufferByteAccess)Reference).GetBuffer(out byte *dataInBytes, out uint capacity);

                        return(new Mat(softwareBitmap.PixelHeight, softwareBitmap.PixelWidth, MatType.CV_8UC4, (IntPtr)dataInBytes));
                    }
            }
            catch
            {
                return(new Mat(softwareBitmap.PixelHeight, softwareBitmap.PixelWidth, MatType.CV_8UC4));
            }
        }