文档详情

Kinect SDK 1.5 Face Tracking --- 使用opencv显示后的超级简化版本

cl****1
实名认证
店铺
DOC
66.50KB
约22页
文档ID:533028757
Kinect SDK 1.5 Face Tracking --- 使用opencv显示后的超级简化版本_第1页
1/22

Kinect SDK 1.5 Face Tracking ---> 使用opencv显示后的超级简化版本 VS2010+opencv2.3.1+Kinect SDK1.5驱动什么的,大家自己安装,木有基础的同学先学好基础先代码是基于我之前更新的SDK1.5基础之上的,如果不太懂,先看之前的文章~ win32_KinectFaceTracking.cpp : 定义控制台应用程序的入口点//#include "stdafx.h"//----------------------------------------------------#define _WINDOWS#include HRESULT VisualizeFaceModel(IFTImage* pColorImg, IFTModel* pModel, FT_CAMERA_CONFIG const* pCameraConfig, FLOAT const* pSUCoef, FLOAT zoomFactor, POINT viewOffset, IFTResult* pAAMRlt, UINT32 color);//----------------------------------------------------#include #include #include #include #include #include #include "opencv2\opencv.hpp"using namespace std;using namespace cv;#include #include #include #include #include "NuiApi.h"#define COLOR_WIDTH 640#define COLOR_HIGHT 480#define DEPTH_WIDTH 320#define DEPTH_HIGHT 240#define SKELETON_WIDTH 640#define SKELETON_HIGHT 480#define CHANNEL 3BYTE buf[DEPTH_WIDTH*DEPTH_HIGHT*CHANNEL];int drawColor(HANDLE h);int drawDepth(HANDLE h);int drawSkeleton();//---face tracking------------------------------------------BYTE *colorBuffer,*depthBuffer;IFTImage* pColorFrame;IFTImage* pDepthFrame;FT_VECTOR3D m_hint3D[2];//-----------------------------------------------------------------------------------HANDLE h1;HANDLE h3;HANDLE h5;HANDLE h2;HANDLE h4;DWORD WINAPI VideoFunc(LPVOID pParam){// cout<<"video start!"<pFrameTexture; NUI_LOCKED_RECT LockedRect; pTexture->LockRect( 0, &LockedRect, NULL, 0 ); if( LockedRect.Pitch != 0 ) { BYTE * pBuffer = (BYTE*) LockedRect.pBits; colorBuffer = pBuffer; memcpy(pColorFrame->GetBuffer(), PBYTE(LockedRect.pBits), min(pColorFrame->GetBufferSize(), UINT(pTexture->BufferLen()))); Mat temp(COLOR_HIGHT,COLOR_WIDTH,CV_8UC4,pBuffer); imshow("b",temp); waitKey(1); } NuiImageStreamReleaseFrame( h, pImageFrame ); return 0;}int drawDepth(HANDLE h){ const NUI_IMAGE_FRAME * pImageFrame = NULL; HRESULT hr = NuiImageStreamGetNextFrame( h, 0, &pImageFrame ); if( FAILED( hr ) ) { cout<<"Get Depth Image Frame Failed"<pFrameTexture; NUI_LOCKED_RECT LockedRect; pTexture->LockRect( 0, &LockedRect, NULL, 0 ); if( LockedRect.Pitch != 0 ) { USHORT * pBuff = (USHORT*) LockedRect.pBits;// depthBuffer = pBuff; memcpy(pDepthFrame->GetBuffer(), PBYTE(LockedRect.pBits), min(pDepthFrame->GetBufferSize(), UINT(pTexture->BufferLen()))); for(int i=0;i>3; BYTE scale = 255 - (BYTE)(256*realDepth/0x0fff); buf[CHANNEL*i] = buf[CHANNEL*i+1] = buf[CHANNEL*i+2] = 0; switch( index ) { case 0: buf[CHANNEL*i]=scale/2; buf[CHANNEL*i+1]=scale/2; buf[CHANNEL*i+2]=scale/2; break; case 1: buf[CHANNEL*i]=scale; break; case 2: buf[CHANNEL*i+1]=scale; break; case 3: buf[CHANNEL*i+2]=scale; break; case 4: buf[CHANNEL*i]=scale; buf[CHANNEL*i+1]=scale; break; case 5: buf[CHANNEL*i]=scale; buf[CHANNEL*i+2]=scale; break; case 6: buf[CHANNEL*i+1]=scale; buf[CHANNEL*i+2]=scale; break; case 7: buf[CHANNEL*i]=255-scale/2; buf[CHANNEL*i+1]=255-scale/2; buf[CHANNEL*i+2]=255-scale/2; break; } } Mat b(DEPTH_HIGHT,DEPTH_WIDTH,CV_8UC3,buf); imshow("depth",b); waitKey(1); } NuiImageStreamReleaseFrame( h, pImageFrame ); retur。

下载提示
相似文档
正为您匹配相似的精品文档