Ask Your Question

ebrahimmasoomi's profile - activity

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)