http://blog.csdn.net/baolinq/article/details/52373574
本文主要根据以上博主的文章,在其基础上将其改为用MFC界面实现,效果图如下
功能实现如下:点击打开深度相机按钮,可以启动kinect相机,然后在左边框图中进行显示,骨骼检测得到的图在右边框图实现。代码链接:这里写链接内容
一.建立工程
1.打开visual studio 新建MFC工程
2.点击下一步,然后选择单文档对话框,再点击下一步
3.点击下一步,去掉勾选粗框架和系统菜单,再点击创建完成就可以了
4.此时界面如图
5.删除TODD:在此放置对话框控件,同时删除取消按钮,保留确定按钮,并将确定按钮选择Caption 重新命名为close
6.找到工具箱,添加一个Button ,一个Caption命名为打开深度相机,然后在工具箱中找到picture Control控件,添加两个到我们的界面,一个ID号重新命名为 IDC_ColorImage ,另外一个命名为IDC_STATIC。 同时可以适当将界面拉大一点,然后在工具箱中找到Static Test 空间,添加两个到界面,一个为深度图像显示,一个为骨骼检测显示,此时界面如图:
7. 现在开始添加代码 ,首先添加opencv的头文件,我是放在bonetestDlg.h中,
#include "Kinect.h"
#include "afxwin.h"
#include<time.h>
bonetestDlg.cpp添加头文件如下
#include "stdafx.h"
#include "bonetest.h"
#include "bonetestDlg.h"
#include "afxdialogex.h"
#include <Kinect.h>
#include "cv.h"
#include <opencv2/opencv.hpp> //opencv头文件
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std; //命名空间
- 双击打开深度相机按钮,程序会转到***Dlg.cpp 的 void CmfcshowDlg::OnBnClickedOpenKinect() 。在这里添加代码在***Dlg.cpp实现与kinect相关的程序如下,并且采用定时器定时更新数据
//--------------------------与Kinect有关-----------------------//
void CbonetestDlg::OnBnClickedOpenKinect()
{
HRESULT hr = myKinect.InitializeDefaultSensor(); //初始化默认Kinect
if (SUCCEEDED(hr))
{
myKinect.Update(); //刷新骨骼和深度数据
}
SetTimer(35, 20, NULL); //定时器
}
void CbonetestDlg::OnTimer(UINT_PTR nIDEvent) //定时器处理
{
switch (nIDEvent)
{
case 35:
myKinect.Update();
<