Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 23.10.2013 | Доступ: свободный | Студентов: 1765 / 617 | Длительность: 09:26:00
Специальности: Программист
Самостоятельная работа 1:

Установка, настройка комплекта средств разработки Intel Perceptual Computing SDK. Использование пакета в средах разработки семейства MS Studio. Hello Word!

< Лекция 2 || Самостоятельная работа 1: 1234 || Лекция 3 >

Простое приложение

Создадим небольшое приложение, отображающее все установленные модули SDK.

#include &quot;stdafx.h&quot;
#include &quot;pxcsession.h&quot;
#include &quot;pxcsmartptr.h&quot;
int _tmain(int argc, _TCHAR* argv[]) {
// создаем сессию
PXCSmartPtr<PXCSession> session;
PXCSession_Create(&session);
for (int i=0;;i++) {
// в цикле запрашиваем все установленные модули при помощи QueryImpl
PXCSession::ImplDesc desc;
pxcStatus sts=session->QueryImpl(0,i,&desc);
if (sts<PXC_STATUS_NO_ERROR) break;
wprintf(L&quot;Module: %s, iuid=0x%x\n&quot;,desc.friendlyName,desc.iuid);
}
return 0;
}

В итоге в командной строке должна быть отображена следующая информация (конечно, в зависимости от предустановленных модулей):

Module: DepthSense 325 Audio/Video Capture, iuid=0x32444b53
Module: Face Analysis (Intel), iuid=0x434c4946
Module: Hand/Finger Tracking & Gesture Recognition, iuid=0x49434b53
Module: Video Capture (Media Foundation), iuid=0x464d5f43
Module: Audio Capture (Media Foundation), iuid=0x41464d43

(Iuid – это идентификатор модуля)

Захват цветного потока

  1. Запустите Microsoft Visual Studio 2010.
  2. Создайте новое консольное приложение. Назовите его "ShowImages"
  3. В свойствах проекта в свойствах конфигурации С/С++ -> Preprocessor -> Preprocessor Definitions добавьте _ITERATOR_DEBUG_LEVEL=0
  4. Следующий код выполняет захват и отображение цветного потока
#include "stdafx.h"
#include "util_render.h"
#include "util_pipeline.h"
 
int _tmain(int argc, _TCHAR* argv[]) {
   UtilPipeline pp;
   pp.EnableImage(PXCImage::COLOR_FORMAT_RGB32);
   pp.Init();
   UtilRender color_render(L"Color Stream");
   for (;;) {
       if (!pp.AcquireFrame(true)) break;
       PXCImage *color_image=pp.QueryImage(PXCImage::IMAGE_TYPE_COLOR);
       if (!color_render.RenderFrame(color_image)) break;
       pp.ReleaseFrame();
   }
   pp.Close();
   return 0;
}

Функция pp.EnableImage() позволяет произвести захват;

Функция pp.Init() инициализирует конвейер захвата;

В цикле:

  • функция pp.AcquireFrame() захватывает кадр. Далее кадр отображается функцией UtilRender::RenderFrame().
  • функция pp.ReleaseFrame() уведомляет о том, что никаких операций над кадром больше не будет.
  • функция pp.Close() останавливает конвейер захвата.

Запустите приложение. В итоге должно отобразиться следующее окно:


Для того чтобы изменить разрешение окна используйте следующий код:

pp.EnableImage(PXCImage::COLOR_FORMAT_RGB32,1280,720). 

В итоге отобразиться окно с разрешением 720p.

Захват и отображение цветного потока и потока глубины

Добавьте строки кода, выделенные красным цветом, в код, приведенный в предыдущем блоке.

#include "stdafx.h"
#include "util_render.h"
#include "util_pipeline.h"
 
int _tmain(int argc, _TCHAR* argv[]) {
   UtilPipeline pp;
   pp.EnableImage(PXCImage::COLOR_FORMAT_RGB32);
  pp.EnableImage(PXCImage::COLOR_FORMAT_DEPTH);
   pp.Init();
   UtilRender color_render(L"Color Stream");
  UtilRender depth_render(L"Depth Stream");
   for (;;) {
       if (!pp.AcquireFrame(true)) break;
       PXCImage *color_image=pp.QueryImage(PXCImage::IMAGE_TYPE_COLOR);
      PXCImage *depth_image=pp.QueryImage(PXCImage::IMAGE_TYPE_DEPTH);
       if (!color_render.RenderFrame(color_image)) break;
      if (!depth_render.RenderFrame(depth_image)) break;
       pp.ReleaseFrame();
   }
   pp.Close();
   return 0;
}

В итоге должны отобразиться два окна, одно окно для отображения цветного потока, другое окно для отображения потока глубины изображения.

< Лекция 2 || Самостоятельная работа 1: 1234 || Лекция 3 >
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко