2017-06-06 12:30:50 -0600
| received badge | ● Enthusiast
|
2016-11-25 04:31:00 -0600
| commented answer | Opencv imshow can not show depth image from Kinect V2 The result did not change..... |
2016-11-24 10:17:34 -0600
| commented answer | Opencv imshow can not show depth image from Kinect V2 I change my code: unsigned int bufferSize = 512 * 424 * sizeof(unsigned short);
unsigned short* pBuffer ;
hResult = pDepthFrame->AccessUnderlyingBuffer(&bufferSize, &pBuffer);
if (SUCCEEDED(hResult)){
DepthMat.create(Width, Height, CV_16U);
BufferMat.copyTo(DepthMat);
}
But this error occurred : OpenCV Error: Null pointer <NULL name> in cvShowImage...
|
2016-11-24 06:10:27 -0600
| commented answer | Opencv imshow can not show depth image from Kinect V2 But in DepthMat there is not create!!!!!!!! |
2016-11-24 01:35:56 -0600
| asked a question | Opencv imshow can not show depth image from Kinect V2 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...:( |
2016-11-23 06:23:52 -0600
| commented answer | visual studio 2013 with c++ do not show Depth image I changed it: if (SUCCEEDED(hResult)){
/* Processing*/
BufferMat.convertTo(DepthMat, CV_8U, -255.0f / 8000.0f, 255.0f);
}
But a new message is: First-chance exception at 0x55F07648 (opencv_highgui2413d.dll) in emmb.exe: 0xC0000005: Access violation reading location 0x00000068. |
2016-11-23 06:19:06 -0600
| received badge | ● Scholar
(source)
|
2016-11-23 05:49:45 -0600
| asked a question | visual studio 2013 with c++ do not show Depth image Hi, I am a new user in Opencv. I wrote a simple code that 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 -1;
}
hResult = pSensor->Open();
if (FAILED(hResult)){
std::cout << "Error : IKinectSensor::Open()" << std::endl;
return -1;
}
IDepthFrameSource* pSource;
hResult = pSensor->get_DepthFrameSource(&pSource);
if (FAILED(hResult)){
std::cout << "Error : IKinectSensor::get_FrameSource()" << std::endl;
return -1;
}
IDepthFrameReader* pDepthReader;
hResult = pSource->OpenReader(&pDepthReader);
if (SUCCEEDED(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);
}
}
SafeRelease(&pDepthFrame);
cv::imshow("Depth", DepthMat);
cv::waitKey(0);
if (cv::waitKey(30) == VK_ESCAPE){
break;
}
l++;
}
cin.get();
return 0;
}
But the output in debugging is: 'emmb.exe' (Win32): Loaded 'C:\Users\Ebi\Documents\Visual Studio 2013\Projects\emmb\Release\emmb.exe'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Kinect20.dll'. Cannot find or open the PDB file.
'emmb.exe' (Win32): Loaded 'C:\opencv\build\x86\vc12\bin\opencv_core2413d.dll'. Cannot find or open the PDB file.
'emmb.exe' (Win32): Loaded 'C:\opencv\build\x86\vc12\bin\opencv_highgui2413d.dll'. Cannot find or open the PDB file.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp110.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\mfplat.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvfw32.dll'. Symbols loaded.
'emmb.exe' (Win32): Loaded 'C:\Windows\SysWOW64 ... (more) |