Опубликован: 23.10.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Северный (Арктический) федеральный университет им. М.В. Ломоносова
Самостоятельная работа 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;
}
В итоге должны отобразиться два окна, одно окно для отображения цветного потока, другое окно для отображения потока глубины изображения.
