资源简介
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;
- 上一篇:C++ 家庭理财管理系统
- 下一篇:车辆信息管理系统课程设计完整源代码
相关资源
- 安卓c语言开发SDL2+opengles
- 三维点云边界提取
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- opengl绘制汽车.cpp
- opengl实现水流效果sph
- opengl源代码,全是精华!
- OpenGL迷宫山东大学图形学实验三
- opengl的立方体消隐算法
- vc++ opengl代码爆炸
- 我见过最漂亮的CS仿真程序openGL和C+
- 广东某工业大学的openGL课程设计
- 三维点云的圆柱面拟合
- 使用OpenGL实现多个小球在密闭空间内
- 利用openGL和C++实现光线跟踪绘图的完
- OpenGl C++太阳系小行星运行系统 可切换
- vc++和OpenGL实现三维地形实时动态显示
- C++实现利用OpenGL实现三维绘图
- 太阳、地球、月亮之间的运动图Open
- MFC 单文档 实现opengl 三维旋转 缩放
- OPENGL的烟花程序(代码)
- MFC+OpenGL三维建模与动画显示
- 基于opengl粒子系统实现喷泉的模拟
- 一个基于openGL的太阳系模型,太阳地
- vc6.0+opengl纯色五角星填充
- vc6.0+opengl动态绘制五角星
- NeHe_OpenGL教程完整版 里面有地址可以
- OpenGL简单——实现立方体贴上不同纹
- MFC实现dem的读取与现实
- VC++ OpenGL三维地形漫游
评论
共有 条评论