第六章 KinectV2结合MFC显示和处理图像数据(上)
首先声明一下,本系统所使用的开发环境版本是计算机系统Windows 10、Visual Studio 2013、Opencv3.0和Kinect SDK v2.0。这些都可以在百度上找到,download下来安装一下即可。详情参考本系列第二篇KinectV2结合opencv入门开发以及一些相关的学习资料
其实只要用前面几章的知识就差不多可以把基本功能实现了,只不过实在控制台下,没有一个好用的交互界面,不方便使用,更不能发挥Kinect的体感方面的优势。想到前面的基础程序是在C++基础上写的,故选了一个好入门的平台--MFC,说好入门不是说MFC简单,只是因为MFC比较成熟,学习资料较多,如果前面是在C#基础上写的,那肯定首选WPF了。MFC那么多内容,这里不便说清楚,我也说不清楚,只能大概说一下本系统的简单界面。
一、用电脑的摄像头代替Kinect的程序
核心的代码如下:
VideoCapture capture; //定义一个摄像头类型的对象
capture.open(0); //打开摄像头
//AfxMessageBox("OK");
if (!capture.isOpened()) //判断是否打开摄像头
{
MessageBox(_T("无法打开摄像头"));
return;
}
//保存视频
writer = cvCreateVideoWriter("MyVideo.avi", CV_FOURCC('x', 'v', 'I', 'D'), 25, cvSize(640, 480));
// 测试
//IplImage* m_Frame;
Mat cframe; //定义一个Mat类对象,用来存放摄像头的图像流
capture >> cframe;
IplImage* iframe;
iframe = &IplImage(cframe); //Mat转IplImage
DrawPicToHDC(iframe, IDC_PIC_STATIC); //显示摄像头获取的图像
//cvWaitKey(10);
// 设置计时器,每10ms触发一次事件
SetTimer(1, 10, NULL);
运行截图:
这是一个非简单的小demo,实现了普通相机的功能,就是录像和拍照啊之类的,基于MFC平台写的,非常简单,而且有详细注释,这里就不做过多的解释。这里给出整个过程的下载地址:
http://download.youkuaiyun.com/detail/baolinq/9618271
二、基于MFC平台的Kinect程序
有了上部分的基础,电脑摄像头和Kinect都是一种摄像头,只是Kinect相机更高端一点,是RGBD相机,很容易类比过去,把电脑摄像头换成kinect相机就差不多了。说起来是这么简单,一两句话的事,但这只是一种思想,如果真的用程序去实现还是有一定的难度。一起来看一下。