来自openni的DLL错误返回指针

时间:2013-07-16 09:47:10

标签: pointers opencv dll openni

我正在尝试使用openni从ASUS Xtion PRO LIVE编写返回RGB图像流的插件。 所以在我的Dll程序中,我实现了VideoFrameRef类的getdata()函数来从图像数据返回指针。当我从我的测试程序中调用此函数时,它会引发异常。

听到我的dll代码

    void* MyRgbStrem::GetStream()
    {
        Device          device;     
        VideoStream     color;      
        VideoFrameRef   vframeRef; 
        VideoMode       vmode;      
        Status status = STATUS_OK;

        status = openni::OpenNI::initialize ();
        status = device.open(openni::ANY_DEVICE);
        status = color.create (device, SENSOR_COLOR);
        status = color.start();

        while (true)
        {
            if (device.getSensorInfo(SENSOR_COLOR) != NULL)
            {
                status = color. readFrame(&vframeRef);
                if (vframeRef.isValid())
                {
                    return ( uint16_t*) vframeRef.getData();
                }
            } 

        }
    }

and in the header file  i declar class MyRgbStrem

  namespace Rgbstream
{
    class MyRgbStrem
    {
    public:

     static __declspec(dllexport) void* GetStream();

    };
}

在我的测试程序中我使用opencv进行图像处理并获得帧宽,高度和大小我在dll程序中声明了更少的函数并在测试应用程序中调用它们

这是我用来调用dll的程序

{
    Mat rgb,bgr;
    int height, width, size;

    height = Rgbstream::MyRgbStrem::GetFrameSize_H();
    width  = Rgbstream::MyRgbStrem::GetFrameSize_W();
    size    = Rgbstream::MyRgbStrem::getSizeOfData();

    bgr.create ( height,width, CV_8UC3);
    rgb.create (height,width, CV_8UC3);


        while (true)
    {
        const void* imgbuff = Rgbstream::MyRgbStrem::GetStream();

        memcpy (bgr.data, imgbuff, size );

        cvtColor(rgb,bgr, CV_RGB2BGR);
        namedWindow ("Color Video",CV_WINDOW_AUTOSIZE);
        imshow ("Color Video", bgr);

        char key = waitKey (10);
        if (key == 27) break;
    }
    return 0;

}

当我运行这个程序时,会抛出这样的异常

  
    

CallRgbStream.exe中0x0F97E89A(msvcr110d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00268000。     程序'[9544] CallRgbStream.exe'已退出,代码为0(0x0)。

  

任何帮助都是值得欣赏的。感谢

0 个答案:

没有答案