Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 23.10.2013 | Доступ: свободный | Студентов: 1826 / 665 | Длительность: 09:26:00
Специальности: Программист
Самостоятельная работа 1:
Установка, настройка комплекта средств разработки Intel Perceptual Computing SDK. Использование пакета в средах разработки семейства MS Studio. Hello Word!
Простое приложение
Создадим небольшое приложение, отображающее все установленные модули SDK.
#include "stdafx.h" #include "pxcsession.h" #include "pxcsmartptr.h" 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"Module: %s, iuid=0x%x\n",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 – это идентификатор модуля)
Захват цветного потока
- Запустите Microsoft Visual Studio 2010.
- Создайте новое консольное приложение. Назовите его "ShowImages"
- В свойствах проекта в свойствах конфигурации С/С++ -> Preprocessor -> Preprocessor Definitions добавьте _ITERATOR_DEBUG_LEVEL=0
- Следующий код выполняет захват и отображение цветного потока
#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; }
В итоге должны отобразиться два окна, одно окно для отображения цветного потока, другое окно для отображения потока глубины изображения.