kinect2.0 opencv3.2 深度图像提取(方式二)
2017-09-15 16:11
1216 查看
转载请注明出处:http://blog.csdn.net/mystylee/article/details/77992963
由于在网上找提取kinect2.0 + opencv3.2 的资料不是很多,很多都是要么是kinect一代,要么就是opencv 版本不对,经过本人几天的研究,写出关于调取kinect深度图像的几种方式。仅供大家参考。
本人配置:win10 + visual studio 2015 + kinect2.0 + opencv3.2
下文是关于kinect 提取深度图像的第二种方式。
#include <Kinect.h>
#include <iostream>
#include <opencv2\highgui.hpp>
using namespace std;
using namespace cv;
char file_name[20];
int a = 0;
int main(void)
{
IKinectSensor * mySensor = nullptr;
GetDefaultKinectSensor(&mySensor); //获取感应器
mySensor->Open(); //打开感应器
IDepthFrameSource * mySource = nullptr; //取得深度数据
mySensor->get_DepthFrameSource(&mySource);
int height = 0, width = 0;
IFrameDescription * myDescription = nullptr; //取得深度数据的分辨率
mySource->get_FrameDescription(&myDescription);
myDescription->get_Height(&height);
myDescription->get_Width(&width);
myDescription->Release();
IDepthFrameReader * myReader = nullptr;
mySource->OpenReader(&myReader); //打开深度数据的Reader
IDepthFrame * myFrame = nullptr;
Mat temp(height, width, CV_16UC1); //建立图像矩阵
Mat depthImg(height, width, CV_8UC1);
while (1)
{
if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取
{
myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中
temp.convertTo(depthImg, CV_8UC1, 255.0 / 4500); //再把16位转换为8位
imshow("TEST", depthImg)
4000
;
sprintf(file_name, "depthImg + %d.jpg", a++);
imwrite(file_name, depthImg);
myFrame->Release();
}
if (waitKey(30) == VK_ESCAPE)
break;
}
myReader->Release(); //释放不用的变量并且关闭感应器
mySource->Release();
mySensor->Close();
mySensor->Release();
return 0;
}
由于在网上找提取kinect2.0 + opencv3.2 的资料不是很多,很多都是要么是kinect一代,要么就是opencv 版本不对,经过本人几天的研究,写出关于调取kinect深度图像的几种方式。仅供大家参考。
本人配置:win10 + visual studio 2015 + kinect2.0 + opencv3.2
下文是关于kinect 提取深度图像的第二种方式。
#include <Kinect.h>
#include <iostream>
#include <opencv2\highgui.hpp>
using namespace std;
using namespace cv;
char file_name[20];
int a = 0;
int main(void)
{
IKinectSensor * mySensor = nullptr;
GetDefaultKinectSensor(&mySensor); //获取感应器
mySensor->Open(); //打开感应器
IDepthFrameSource * mySource = nullptr; //取得深度数据
mySensor->get_DepthFrameSource(&mySource);
int height = 0, width = 0;
IFrameDescription * myDescription = nullptr; //取得深度数据的分辨率
mySource->get_FrameDescription(&myDescription);
myDescription->get_Height(&height);
myDescription->get_Width(&width);
myDescription->Release();
IDepthFrameReader * myReader = nullptr;
mySource->OpenReader(&myReader); //打开深度数据的Reader
IDepthFrame * myFrame = nullptr;
Mat temp(height, width, CV_16UC1); //建立图像矩阵
Mat depthImg(height, width, CV_8UC1);
while (1)
{
if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取
{
myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中
temp.convertTo(depthImg, CV_8UC1, 255.0 / 4500); //再把16位转换为8位
imshow("TEST", depthImg)
4000
;
sprintf(file_name, "depthImg + %d.jpg", a++);
imwrite(file_name, depthImg);
myFrame->Release();
}
if (waitKey(30) == VK_ESCAPE)
break;
}
myReader->Release(); //释放不用的变量并且关闭感应器
mySource->Release();
mySensor->Close();
mySensor->Release();
return 0;
}
相关文章推荐
- kinect2.0 opencv3.2深度图像提取(方式一)
- kinect2.0 opencv3.2 骨骼图像提取
- win10 64位+Kinect 2.0+VS 2013+opencv开发环境搭建及深度图像读取
- 2 kinect for windows(k4w) sdk之提取深度图像并利用opencv显示
- Kinect sdk 2.0 + Opencv 获取深度图像并保存
- kinect2.0+opencv获取图像和深度图像
- Kinect2.0 winSDK彩图深度图红外图Opencv显示
- 从RealSense中提取完整的深度和彩色图像,并存在opencv中的Mat里
- kinect2.0开发(一) 读取深度图像
- OpenCV--鼠标响应Kinect彩色图像显示深度信息
- Kinect For Windows V2开发日志四:使用OpenCV显示深度图像
- ubuntu 14.04 +Kinect+ openNI+ openCV+ Sensorkinect 配置 +获取深度图像及相关问题
- kinect,openni,opencv 获取并显示深度与彩色图像
- 在pcl用例中获取kinect深度图像数据,并用opencv显示出来
- OpenNI结合OpenCV显示Kinect彩色、深度及融合图像
- OpenCV单kinect多帧静止场景的深度图像去噪
- Kinect2.0 mapping 深度相机图像和颜色相机图像
- 基于Kinect-OpenNI-OpenCV-OpenGL的环境三维重构 windows vs2008 深度彩色图像
- 【OpenCV学习笔记】之四:二值图像细化方法/骨架提取----基于2.0 Mat接口
- [Mo]OpenNI+OpenCV处理kinect深度图,获取手掌骨架图像