程序用于将彩色图像中的前景进行提取。意义不大,效果还好
用到:Kinect SDK + C++ + OpenCV2.4.4
在程序中用到了深度图像和彩色图像对齐的函数MapColorFrameToDepthFrame。
对抠取的图像,最好再进过必要的处理,才能有实际的用处
#include <opencv2\opencv.hpp>
#include<iostream>
//windows的头文件,必须要,不然NuiApi.h用不了
#include <Windows.h>
//Kinect for windows 的头文件
#include "NuiApi.h"
using namespace std;
using namespace cv;
#include <d3d11.h>
//最远距离(mm)
const int MAX_DISTANCE = 3500;
//最近距离(mm)
const int MIN_DISTANCE = 200;
const LONG m_depthWidth = 640;
const LONG m_depthHeight = 480;
const LONG m_colorWidth = 640;
const LONG m_colorHeight = 480;
const LONG cBytesPerPixel = 4;
int main()
{
//彩色图像
Mat image_rgb;
//深度图像
Mat image_depth;
//创建一个MAT
image_rgb.create(480,640,CV_8UC3);
image_depth.create(480,640,CV_8UC1);
//一个KINECT实例指针
INuiSensor* m_pNuiSensor = NULL;
if (m_pNuiSensor != NULL)
{
return 0;
}
//记录当前连接KINECT的数量(为多连接做准备)
int iSensorCount;
//获得当前KINECT的数量
HRESULT hr = NuiGetSensorCount(&iSensorCount);
//按照序列初始化KINETC实例,这里就连接了一个KINECT,所以没有用到循环
hr = NuiCreateSensorByIndex(iSensorCount - 1, &m_pNuiSensor);
//初始化,让其可以接收彩色和深度数据流
hr = m_pNuiSensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR | NUI_INITIALIZE_FLAG_USES_DEPTH);
//判断是否出错
if (FAILED(hr))
{
cout<<"NuiInitialize failed"<<endl;
return hr;
}
//彩色