资源简介
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++ 家庭理财管理系统
- 下一篇:车辆信息管理系统课程设计完整源代码
相关资源
- 基于MFC和OPENGL的五轴G代码仿真
- Kinect2.0+PCL实现点云显示
- 雪花——OpenGL
- PCL点云-RGBD图像ICP迭代最近点之点云配
- 编写 1 个程序绘制这些控制点生成的
- vc++ 和 openGL 做的 3D水波模拟 非常炫
- 基于openGl的画直线和三角形光栅化源
- opengl+mfc画线填充左键单击绘包围线、
- vs mfc opengl配置教程
- 点云数据滤波------数学形态学
- OpenGL实现模拟瀑布的粒子系统
- PCL点云拼接
- OpenGL安装包加配置 一看就懂
- 基于OPENGL的C语言大作业
- OpenGL 立体五角星 绘制
- 用opengl实现分形山
- Windows下配置python_pcl全套资料
- 计算机图形学VSC++生成时钟报告含代码
- 山东大学图像学实验openGL读取off文件
- VC++ OpenGL三维物体建模--雨伞的绘制(
- 地球绕着太阳转,月亮绕着地球转
- 配置OpenGL所需文件全
- 用C++ 和opengl实现多个雪人,而且可以
- 基于Camshift+Kalman的多目标跟踪
- OpenGL 真实感图形编程C++实现
- opengl动态显示贝塞尔曲线
- opengl绘制行星两个行星一个恒星
- 激光雷达点云地平面校准 地面分割
- vc++ opengl 下雪场景实现
- 基于OpenGL的音乐可视化、频谱图
评论
共有 条评论