首页 文章

从pcl openni grabber获取rgb的OpenCV Mat变量和深度信息

提问于
浏览
0

我现在正在使用pcl openni grabber从kinect摄像头获取点 Cloud . 但我也想获得rgb和深度信息的OpenCV Mat变量 .

有谁知道如何实现这一目标?

非常感谢!

1 回答

  • 0

    我刚刚发现pcl有自己的openni2包装器来直接获取颜色和深度图像 . 我们可以写一个回调函数,如:

    void PclProcessor::image_cb1_ (const boost::shared_ptr<pcl::io::Image>& rgb1, const boost::shared_ptr<pcl::io::DepthImage>& depth1, float reciprocalFocalLength)
    {
        if (refreshK1)
        {
            C1 = Mat(rgb1->getHeight(), rgb1->getWidth(), CV_8UC3);
            rgb1->fillRGB(C1.cols,C1.rows,C1.data,C1.step);
            cvtColor(C1, C1, CV_RGB2BGR);
    
            D1 = Mat(depth1->getHeight(), depth1->getWidth(), CV_32F);
            depth1->fillDepthImage(D1.cols, D1.rows,(float *)D1.data,D1.step);
    
            refreshK1 = false;
        }
        imshow("camera 1 color",C1);
        imshow("camera 1 depth",D1);
        cv::waitKey(0);
    }
    

    在这种情况下,我可以正确地获得彩色图像 . 但是,深度图像看起来不正确 .

    color image

    depth image

相关问题