Хобрук: Ваш путь к мастерству в программировании

Kinect Depth и ИК-изображение в UWP (удалить цвет)

Я работаю с Kinect V2 UWP C# для XBOX и Windows. Я следил за демонстрация Kinect UWP для этой цели. Мне удалось прочитать и отобразить кадры, как показано в Camera Frame. пример, но я заметил, что изображения глубины и ИК-изображения, например, цветные: Kinect studio и выходные данные приложения UWP

Я новичок в этом и пытался искать, но не нашел четкого ответа. Кто-нибудь может помочь, пожалуйста? Я был бы очень признателен за это.

05.08.2020

  • Это ложные цветные изображения. Цвет просто разделяет расстояние между показаниями (пикселями) как в ИК, так и в глубине. Например. более дальние или нечитаемые объекты становятся черными, тогда как более близкие объекты меняют цвет с серого на белый. То же самое для IR, где разные значения представлены цветом, чтобы различать их. 06.08.2020
  • Можно ли удалить ложный цвет с этих изображений? В студии Kinect и в приложении wpf для Windows это кажется возможным, но мне трудно сделать это в UWP. 06.08.2020
  • Я сделал это в пользовательских приложениях WPF, однако не могу сказать о приложениях UWP. Я определенно был бы возможен, но вам придется копнуть немного глубже в документации, я думаю. Просто прочитайте метод, который отображает рамку в окне. Должен быть какой-то вызываемый аргумент, который можно удалить/изменить и который в основном отображает ложные цвета. В любом случае, это всего лишь визуальное представление и никаким образом не изменяющее базовые данные. 07.08.2020

Ответы:


1

Я пробовал много вещей и, наконец, нашел способ получить изображения без псевдоцветов.

Поскольку XAML отображается только в формате Bgra8, его необходимо преобразовать. Это помогло обрабатывать кадры отдельно по цвету и глубине.

Мне также нужно было обновить версию Windows 10 до 10.0.19041.0 или новее.

//clrFrame.
            var buffFrame = clrFrame?.BufferMediaFrame;
            
            // Get the Individual Frame
            var vidFrame = clrFrame?.VideoMediaFrame;
            {
                if (vidFrame == null) return;

                
                // create a UWP SoftwareBitmap and copy Frame into Bitmap
                SoftwareBitmap sbt = new SoftwareBitmap(vidFrame.SoftwareBitmap.BitmapPixelFormat, vidFrame.SoftwareBitmap.PixelWidth, vidFrame.SoftwareBitmap.PixelHeight);
                vidFrame.SoftwareBitmap.CopyTo(sbt);

                // PixelFormat needs to be in 8bit BGRA for Xaml writable bitmap
                if (sbt.BitmapPixelFormat != BitmapPixelFormat.Bgra8)
                    sbt = SoftwareBitmap.Convert(vidFrame.SoftwareBitmap, BitmapPixelFormat.Bgra8);
                
                if (source != null)
                {
                    // To write out to writable bitmap which will be used with ImageElement, it needs to run
                    // on UI Thread thus we use Dispatcher.RunAsync()...
                    var ignore = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        // This code runs on UI Thread
                        // Create the writableBitmap for ImageElement display
                        extBitmap = new WriteableBitmap(sbt.PixelWidth, sbt.PixelHeight);

                        // Copy contents from UWP software Bitmap
                        // There are other ways of doing this instead of the double copy, 1st copy earlier
                        // this is a second copy.
                        sbt.CopyToBuffer(extBitmap.PixelBuffer);
                        extBitmap.Invalidate();

                        // Set the imageElement source
                        var ig = source.SetBitmapAsync(sbt);
                        imgView.Source = source;

                    });

                }
            }

Следующий пример проекта помогает решить эту проблему. Пришлось создать обработку для ИК и глубины и передать соответствующие параметры.

https://github.com/dngoins/KinectUWPApps/tree/master/WorkingWithMediaCaptureFramesSolution

11.08.2020
Новые материалы

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..