kinect2.0(二)读取彩色图像

原创 2015年11月19日 22:04:54

读取彩色图像步骤

1.获取kinect传感器
2.打开传感器
3.获取彩色图像信息传感器
4. 打开彩色图像帧读取器
5.获得最近的一帧
6. 将彩色图像转换按三通道保存为MAT格式
7.用opencv的imshow显示
8. 回收和释放内存

#include <stdio.h>
#include <iostream>
#include <Kinect.h>
#include <windows.h>
#include <opencv/highgui.h>
#include <cv.h>

using namespace cv;
using namespace std;


int main()
{
    IKinectSensor* m_pKinectSensor;
    IColorFrameSource* pColorFrameSource;
    IColorFrameReader* m_pColorFrameReader;
    IFrameDescription* pFrameDescription = NULL;
    ColorImageFormat imageFormat = ColorImageFormat_None;
    int nWidth, nHeight;
    uchar *pBuffer = NULL;

    UINT nBufferSize = 0;



    HRESULT hr = GetDefaultKinectSensor(&m_pKinectSensor);//获取默认传感器
    assert(hr >= 0);
    hr = m_pKinectSensor->Open();//打开传感器
    assert(hr >= 0);
    hr = m_pKinectSensor->get_ColorFrameSource(&pColorFrameSource);//打开颜色信息源
    assert(hr >= 0);
    pColorFrameSource->OpenReader(&m_pColorFrameReader);//打开颜色帧读取器
    assert(hr >= 0);
    while (1){
        //获取最近的彩色帧
        IColorFrame* pColorFrame = NULL;
        while ((hr < 0) || (NULL == pColorFrame))//循环直到获取到最近的一帧
        {
            hr = m_pColorFrameReader->AcquireLatestFrame(&pColorFrame);
        }
        //获取彩色图片信息包括宽,高,格式
        assert(hr >= 0);
        pColorFrame->get_FrameDescription(&pFrameDescription);//获取图片描述信息
        pFrameDescription->get_Width(&nWidth);
        pFrameDescription->get_Height(&nHeight);
        cout << "width=" << nWidth << endl;//我的kinect摄像头宽为1920
        cout << "Height=" << nHeight << endl;//我的kinect摄像头高为1080
        pColorFrame->get_RawColorImageFormat(&imageFormat);//输出结果为 ColorImageFormat_Yuy2    = 5,为Yuy2格式
        /*YUY2格式,以4:2:2方式打包 YUV 4:2:2
        每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4 : 4的一半。对非压缩的8比特量化的图像来说,
        每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。
        下面的四个像素为:[Y0 U0 V0][Y1 U1 V1][Y2 U2 V2][Y3 U3 V3]
        存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3
        映射出像素点为:[Y0 U0 V1][Y1 U0 V1][Y2 U2 V3][Y3 U2 V3]*/
        cout << "imageformat is " << imageFormat << endl;

        Mat colorImg(nHeight, nWidth, CV_8UC4);//新建一个mat对象,用于保存读入的图像,注意参数的高在前,宽在后
        pBuffer = colorImg.data;
        nBufferSize = colorImg.rows*colorImg.step;

        /*调用CopyConvertedFrameDataToArray,此函数的作用是从pColorFrame对象中拷贝nBufferSize个字节到pBuffer所指的Mat矩阵中,按
        ColorImageFormat_Bgra格式保存*/
        hr = pColorFrame->CopyConvertedFrameDataToArray(nBufferSize, reinterpret_cast<BYTE*>(pBuffer), ColorImageFormat_Bgra);
        pColorFrame->Release();

        namedWindow("display");
        imshow("display", colorImg);
        if (27 == waitKey(50))
            break;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Kinect v2.0原理介绍之六:Kinect深度图与彩色图的坐标校准

~~有兴趣的加kinect算法交流群:462964980 kinect的深度数据和彩色数据的分辨率以及视场大小都不一样,不能直接对应起来,想要把深度和彩色融合起来就要费一番周折了。 看了MSDN中...
  • u014365862
  • u014365862
  • 2015年09月04日 19:40
  • 4772

Kinect 2 SDK + OpenCV 获取深度彩色图像

感谢有钱到老板
  • yongshengsilingsa
  • yongshengsilingsa
  • 2014年07月18日 21:26
  • 25554

Kinect2+opencv获取深度图

  • 2017年06月27日 17:44
  • 11.74MB
  • 下载

Kinect v2.0如何获取彩色图像和深度图像

首先,下载最新的Kinect 2 SDK  http://www.microsoft.com/en-us/kinectforwindows/develop/downloads-docs.aspx下载之...
  • wangmengmeng99
  • wangmengmeng99
  • 2017年05月22日 20:51
  • 884

Kinect入门(1)——显示彩色图像数据流

进行本节的前提是已配置好Kinect的开发环境。废话不多说,直接进入正题!Kinect+VS2012显示彩色图像数据流1、新建C# WPF应用程序,项目名随便写即可。2、在解决方案“….”里右击“引用...
  • jnulzl
  • jnulzl
  • 2015年09月14日 14:55
  • 1982

如何使用Kinect显示彩色图像和深度图像。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W...
  • jia_zhengshen
  • jia_zhengshen
  • 2013年05月08日 15:54
  • 2531

kinect2.0获取深度图、彩色图,并利用Opencv显示

  • 2016年12月15日 09:59
  • 9.6MB
  • 下载

Kinect入门(2)——显示深度图像数据流

显示深度数据流的步骤与显示彩色图像的步骤基本一样。所以,这里就只说源码中不一样的地方。具体源码参考显示彩色图像数据流。**显示深度图像与显示彩色图像源码的不同点1、在上一篇的“3、在WPF里添加必要的...
  • jnulzl
  • jnulzl
  • 2015年09月14日 14:45
  • 2591

kinect2.0开发(一) 读取深度图像

读取深度图像
  • ktigerhero3
  • ktigerhero3
  • 2015年11月19日 17:33
  • 6070

kinect2.0+opencv获取图像和深度图像

参考这篇博客的程序,http://blog.csdn.net/yongshengsilingsa/article/details/37935975 //师兄写的获取深度信息的程序,并且将深度信息存储为...
  • lgdnr
  • lgdnr
  • 2015年12月26日 17:11
  • 2673
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kinect2.0(二)读取彩色图像
举报原因:
原因补充:

(最多只允许输入30个字)