您的位置:首页 > 运维架构

Opencv+Kinect2.0 的环境配置和获取彩色图

2015-09-13 19:21 441 查看
一、环境的配置

在属性管理器窗口中找到Microsoft.Cpp.Win32.user这一项,双击进入。



然后在 通用属性,VC++目录下

默认Opencv已经配置好,在包含目录中添加:

$(KINECTSDK20_DIR)\inc

在库目录中添加:

$(KINECTSDK20_DIR)\lib\x86



然后在cpp文件的include….后添加

#include <Kinect.h>
#pragma comment ( lib, "kinect20.lib" )


到这就可以了。

二、获取彩色图

直接看代码和注释吧

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
#include <Kinect.h>
#pragma comment ( lib, "kinect20.lib" )

using namespace cv;
using namespace std;

int main()
{
HRESULT hResult = S_OK;     //用于检测操作是否成功
IKinectSensor *kinect;           //创建一个感应器
GetDefaultKinectSensor(&kinect);
kinect->Open();     //打开感应器
IColorFrameSource *colorsource;
IColorFrameReader *colorreader;
IFrameDescription *colorde;
kinect->get_ColorFrameSource(&colorsource);
colorsource->OpenReader(&colorreader);
colorsource->get_FrameDescription(&colorde);

int width = 0;      //长和宽
int hight = 0;
colorde->get_Height(&hight);
colorde->get_Width(&width);
Mat a(hight, width, CV_8UC4);      //注意:这里必须为4通道的图,Kinect的数据只能以Bgra格式传出
namedWindow("aaa");
while (1)
{
IColorFrame*frame;
hResult=colorreader->AcquireLatestFrame(&frame);
if (SUCCEEDED(hResult))
{
frame->CopyConvertedFrameDataToArray(hight*width * 4, reinterpret_cast<BYTE*>(a.data), ColorImageFormat::ColorImageFormat_Bgra);   //传出数据
}
if (frame != NULL)   //释放
{
frame->Release();
frame = NULL;
}
if (waitKey(30) == VK_ESCAPE)
break;
imshow("aaa", a);
}
if (colorsource != NULL)    //全部释放掉
{
colorsource->Release();
colorsource = NULL;
}
if (colorreader != NULL)
{
colorreader->Release();
colorreader = NULL;
}
if (colorde != NULL)
{
colorde->Release();
colorde = NULL;
}
if (kinect)
{
kinect->Close();
}
if (kinect != NULL)
{
kinect->Release();
kinect = NULL;
}
destroyAllWindows();
}


运行图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: