首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kinect 2无法'AcquireLatestFrame‘

Kinect 2无法'AcquireLatestFrame‘
EN

Stack Overflow用户
提问于 2015-07-10 00:09:54
回答 1查看 1.3K关注 0票数 2

我正在使用我在网上找到的示例中的以下代码。它似乎拾取了一个帧,但随后永远不会成功地'AcquireLatestFrame‘。我的body阅读器也有同样的问题。任何人都能看到可能导致这种情况的问题吗?

代码语言:javascript
复制
IKinectSensor* pSensor;
HRESULT hResult = S_OK;
hResult = GetDefaultKinectSensor(&pSensor);
if (FAILED(hResult)) {
    std::cerr << "Error : GetDefaultKinectSensor" << std::endl;
    return -1;
}

hResult = pSensor->Open();
if (FAILED(hResult)) {
    std::cerr << "Error : IKinectSensor::Open()" << std::endl;
    return -1;
}

// Source
IColorFrameSource* pColorSource;
hResult = pSensor->get_ColorFrameSource(&pColorSource);
if (FAILED(hResult)) {
    std::cerr << "Error : IKinectSensor::get_ColorFrameSource()" << std::endl;
    return -1;
}

// Reader
IColorFrameReader* pColorReader;
hResult = pColorSource->OpenReader(&pColorReader);
if (FAILED(hResult)) {
    std::cerr << "Error : IColorFrameSource::OpenReader()" << std::endl;
    return -1;
}

// Description
IFrameDescription* pDescription;
hResult = pColorSource->get_FrameDescription(&pDescription);
if (FAILED(hResult)) {
    std::cerr << "Error : IColorFrameSource::get_FrameDescription()" << std::endl;
    return -1;
}

int width = 0;
int height = 0;
pDescription->get_Width(&width); // 1920
pDescription->get_Height(&height); // 1080
unsigned int bufferSize = width * height * 4 * sizeof(unsigned char);

cv::Mat bufferMat(height, width, CV_8UC4);
cv::Mat colorMat(height / 2, width / 2, CV_8UC4);
cv::namedWindow("Color");

while (1) {
    // Frame
    IColorFrame* pColorFrame = nullptr;
    hResult = pColorReader->AcquireLatestFrame(&pColorFrame);
    if (SUCCEEDED(hResult)) {
        hResult = pColorFrame->CopyConvertedFrameDataToArray(bufferSize, reinterpret_cast<BYTE*>(bufferMat.data), ColorImageFormat::ColorImageFormat_Bgra);
        if (SUCCEEDED(hResult)) {
            cv::resize(bufferMat, colorMat, cv::Size(), 0.5, 0.5);
        }
    }
    else
    {
        cout << "Can't aquire latest frame.\n";
    }

    cv::imshow("Color", colorMat);

    if (cv::waitKey(30) == VK_ESCAPE) {
        break;
    }
}

if (pSensor) {
    pSensor->Close();
}

cv::destroyAllWindows();
EN

回答 1

Stack Overflow用户

发布于 2015-07-10 21:02:20

我不是要发布pColorFrame这样做就解决了这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31322811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档