Hi:):) I I wrote a c++ code to open Kinect and show Depth mage(after installing kinect sdk 2.0) .my code is:
// emmb.cpp : Defines the entry point for the console application.
//
include "stdafx.h"
include <kinect.h>
include <iostream>
include <opencv2\core.hpp>
include <opencv2\video.hpp>
include <opencv2\highgui.hpp>
typedef unsigned short unit16; using namespace cv; using namespace std; template <class t=""> void SafeRelease(T *ppT) { if (ppT) { (*ppT)->Release(); *ppT = NULL; } };
int _tmain(int argc, _TCHAR* argv[]) { IKinectSensor* pSensor; HRESULT hResult = S_OK; hResult = GetDefaultKinectSensor(&pSensor); if (FAILED(hResult)){ std::cout << "Error : GetDefaultKinectSensor" << std::endl; return 11; } hResult = pSensor->Open(); if (FAILED(hResult)){ std::cout << "Error : IKinectSensor::Open()" << std::endl; return 22; } IDepthFrameSource* pSource; hResult = pSensor->get_DepthFrameSource(&pSource); if (FAILED(hResult)){ std::cout << "Error : IKinectSensor::get_FrameSource()" << std::endl; return 33; } IDepthFrameReader* pDepthReader; hResult = pSource->OpenReader(&pDepthReader); if (FAILED(hResult)){ std::cout << "Error : IFrameSource::OpenReader()" << std::endl; return -1; } int l = 0; int Width = 512; // ...... 1 int Height = 424; cv::Mat BufferMat(Height, Width, CV_16UC1); // ...... 3 cv::Mat DepthMat(Height, Width, CV_8UC1); // ...... 3 // cv::namedWindow("ebi");
while (l<1){
// Frame
IDepthFrame* pDepthFrame = nullptr;
hResult = pDepthReader->AcquireLatestFrame(&pDepthFrame);
if (SUCCEEDED(hResult)){
unsigned int bufferSize = 512 * 424 * sizeof(unsigned short);
unsigned short* pBuffer = nullptr;
hResult = pDepthFrame->AccessUnderlyingBuffer(&bufferSize, reinterpret_cast<UINT16**>(&BufferMat.data));
if (SUCCEEDED(hResult)){
/* Processing*/
BufferMat.convertTo(DepthMat, CV_8U, -255.0f / 8000.0f, 255.0f);
}
}
cv::imshow("kdkk",DepthMat);
if (cv::waitKey(30) == VK_ESCAPE){
break;
}
SafeRelease(&pDepthFrame);
l++;
}
cin.get();
return 0;
}
But this warning is showed:
Unhandled exception at 0x60527648 (opencv_highgui2413d.dll) in emmb.exe: 0xC0000005: Access violation reading location 0x2F29BB00.**strong text**
and when I clicked on continue again this message is showed... how can I solve it? sorry for my English...:(