Opencv+Kinect2.0获取景深图
来源:互联网 发布:淘宝人像摄影教程 编辑:程序博客网 时间:2024/04/30 02:11
一、景深图
和之前获取彩色图的差不多,就多了一个类型转换
#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(); IDepthFrameSource *depthrsource; IDepthFrameReader *depthreader; IFrameDescription *depthde; kinect->get_DepthFrameSource(&depthrsource); depthrsource->OpenReader(&depthreader); depthrsource->get_FrameDescription(&depthde); int width = 0; int height = 0; depthde->get_Height(&height); depthde->get_Width(&width); Mat a(height, width, CV_8UC1); namedWindow("aaa"); UINT16 *data = new UINT16[width*height]; while (1) { IDepthFrame*frame; hResult=depthreader->AcquireLatestFrame(&frame); if (SUCCEEDED(hResult)) { frame->CopyFrameDataToArray(height*width, data); for (int i = 0; i < width*height; i++) { byte intensity = (byte)(data[i]>>5); //类型的转换,data内的值即为距离 reinterpret_cast<BYTE*>(a.data)[i] = intensity; } } if (frame != NULL) { frame->Release(); frame = NULL; } if (waitKey(30) == VK_ESCAPE) break; imshow("aaa", a); } if (depthrsource != NULL) { depthrsource->Release(); depthrsource = NULL; } if (depthreader != NULL) { depthreader->Release(); depthreader = NULL; } if (depthde != NULL) { depthde->Release(); depthde = NULL; } if (kinect) { kinect->Close(); } if (kinect != NULL) { kinect->Release(); kinect = NULL; } destroyAllWindows();}
运行图:
二、红外图
同样,只是修改下类型就可以了
#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(); IInfraredFrameSource *irsource; IInfraredFrameReader *irreader; IFrameDescription *irde; kinect->get_InfraredFrameSource(&irsource); irsource->OpenReader(&irreader); irsource->get_FrameDescription(&irde); int width = 0; int height = 0; irde->get_Height(&height); irde->get_Width(&width); Mat a(height, width, CV_8UC1); namedWindow("aaa"); UINT16 *data = new UINT16[width*height]; while (1) { IInfraredFrame*frame; hResult=irreader->AcquireLatestFrame(&frame); if (SUCCEEDED(hResult)) { frame->CopyFrameDataToArray(height*width, data); for (int i = 0; i < width*height; i++) { byte intensity = (byte)(data[i]>>8); //类型的转换 reinterpret_cast<BYTE*>(a.data)[i] = intensity; } } if (frame != NULL) { frame->Release(); frame = NULL; } if (waitKey(30) == VK_ESCAPE) break; imshow("aaa", a); } if (irsource != NULL) { irsource->Release(); irsource = NULL; } if (irreader != NULL) { irreader->Release(); irreader = NULL; } if (irde != NULL) { irde->Release(); irde = NULL; } if (kinect) { kinect->Close(); } if (kinect != NULL) { kinect->Release(); kinect = NULL; } destroyAllWindows();}
运行图:
0 0
- Opencv+Kinect2.0获取景深图
- Kinect2.0+EmguCV获取景深图
- Kinect2.0+OpenCV获取骨骼图
- Opencv+Kinect2.0 的环境配置和获取彩色图
- Opencv+Kinect2.0获取BodyIndex图像
- Opencv+Kinect2.0抠图
- Kinect2.0+Opencv获取高清面部信息
- kinect2.0+opencv获取图像和深度图像
- EmguCV+Kinect2.0获取BodyIndex图
- Kinect2.0 winSDK彩图深度图红外图Opencv显示
- kinect2.0开发笔记(三) 获取红外图
- VS2017+opencv+kinect2.0+Dlib环境配置
- EmguCv +Kinect2.0 获取面部信息
- opencv模拟景深效果
- opencv+Kinect2.0调用Visual Gesture Builder制作的动作
- kinect2.0开发笔记(二) 获取彩色图和深度图
- kinect2.0的骨骼节点坐标的获取与handstate
- EmguCV+Kinect2.0获取高清面部帧
- iOS正则表达式使用
- 签证之家
- php向数据库中插入中文乱码问题
- HDU 5439 Aggregated Counting
- 利用Aspose.Words打印word文档
- Opencv+Kinect2.0获取景深图
- POJ 1401&&NYOJ 954 N!
- hdu 5438 Ponds(并查集+拓扑序)
- Linux 线程同步的三种方法
- 软件测试中的白盒测试
- Linux chmod命令详解 http://www.cnblogs.com/younes/archive/2009/11/20/1607174.html
- 架构师速成-架构目标之可用性
- Paper阅读笔记_1
- ArrayList的源码分析