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

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

然后在 通用属性,VC++目录下
默认Opencv已经配置好,在包含目录中添加:
$(KINECTSDK20_DIR)\inc

在库目录中添加:
$(KINECTSDK20_DIR)\lib\x86

Opencv+Kinect2.0 的环境配置和获取彩色图_第1张图片
然后在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();
}

运行图:

你可能感兴趣的:(VC,opencv,kinect)