• 大小: 7KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: kinect2  opengl  点云  

资源简介

kinect+opengl 生成并显示点云 可查看博客http://blog.csdn.net/jiaojialulu/article/details/53089353

资源截图

代码片段和文件信息

#include 
#include “kinect.h“
#include 
#include   
#include   
#include 
#include 
#include 
#include 
#include “PracticalSocket.h“
#include 
#define GL_DISPLAY
//#define SAVE_IMG
using namespace cv;
using namespace std;

#pragma comment(lib “opengl32.lib“)
double yaw pitch lastX lastY; int ml;
static void on_mouse_button(GLFWwindow * win int button int action int mods)
{
if (button == GLFW_MOUSE_BUTTON_LEFT) ml = action == GLFW_PRESS;
}
static double clamp(double val double lo double hi) { return val < lo ? lo : val > hi ? hi : val; }
static void on_cursor_pos(GLFWwindow * win double x double y)
{
if (ml)
{
yaw = clamp(yaw - (x - lastX) -120 120);
pitch = clamp(pitch + (y - lastY) -80 80);
}
lastX = x;
lastY = y;
}


// 安全释放指针
template
inline void SafeRelease(Interface *& pInterfaceToRelease)
{
if (pInterfaceToRelease != NULL)
{
pInterfaceToRelease->Release();
pInterfaceToRelease = NULL;
}
}

int main()
{
#ifdef GL_DISPLAY
/// [gl display]
// Open a GLFW window to display our output
int a = glfwInit();
GLFWwindow * win = glfwCreateWindow(1024 768 “gl_win“ nullptr nullptr);
glfwSetCursorPosCallback(win on_cursor_pos);
glfwSetMouseButtonCallback(win on_mouse_button);
glfwMakeContextCurrent(win);
#endif
#pragma region 初始化设备
// 获取Kinect设备
IKinectSensor* m_pKinectSensor;
ICoordinateMapper*      m_pCoordinateMapper;
CameraIntrinsics* m_pCameraIntrinsics = new CameraIntrinsics();
HRESULT hr;
hr = GetDefaultKinectSensor(&m_pKinectSensor);
if (FAILED(hr))
{
return hr;
}

IMultiSourceframeReader* m_pMultiframeReader;
IBodyframeSource* m_pBodyframeSource;
IBodyframeReader* m_pBodyframeReader;
if (m_pKinectSensor)
{
hr = m_pKinectSensor->Open();
//Sleep(2000);
if (SUCCEEDED(hr))
{
m_pKinectSensor->get_BodyframeSource(&m_pBodyframeSource);
// 获取多数据源到读取器  
hr = m_pKinectSensor->OpenMultiSourceframeReader(
frameSourceTypes::frameSourceTypes_Color |
frameSourceTypes::frameSourceTypes_Infrared |
frameSourceTypes::frameSourceTypes_Depth
&m_pMultiframeReader);
}
}
if (SUCCEEDED(hr))
{
hr = m_pKinectSensor->get_CoordinateMapper(&m_pCoordinateMapper);
}
if (!m_pKinectSensor || FAILED(hr))
{
return E_FAIL;
}
// 三个数据帧及引用
IDepthframeReference* m_pDepthframeReference = NULL;
IColorframeReference* m_pColorframeReference = NULL;
IDepthframe* m_pDepthframe = NULL;
IColorframe* m_pColorframe = NULL;
// 四个个图片格式
Mat i_rgb(1080 1920 CV_8UC4);      //注意:这里必须为4通道的图,Kinect的数据只能以Bgra格式传出
//Mat i_depth_raw(424 512 CV_16UC1);


IMultiSourceframe* m_pMultiframe = NULL;

DepthSpacePoint*        m_pDepthCoordinates = NULL;
ColorSpacePoint*        m_pColorCoordinates = NULL;
CameraSpacePoint*        m_pCameraCoordinates = NULL;

评论

共有 条评论