将cv :: Mat转换为穿山甲::图片?

时间:2017-10-10 09:43:55

标签: c++ opencv

我有一个接收pangolin::Image格式rgbd图像的应用程序。我想寄一个cv::Mat。如何将cv :: Mat转换为pangolin :: Image?

(穿山甲:https://github.com/stevenlovegrove/Pangolin

图片标题:

https://github.com/stevenlovegrove/Pangolin/blob/master/include/pangolin/image/image.h

目前的格式是:

pangolin::ManagedImage<unsigned short> firstData(640, 480);

    pangolin::Image<unsigned short> firstRaw(firstData.w, firstData.h, firstData.pitch, (unsigned short*)firstData.ptr);

然后通过应用程序发送firstRaw

如果我现在有:

cv::Mat frame = cv::imread(filepath,0);

framefirstRaw的转换是什么?

我是这样开始的:

int loadDepthFromMat(cv::Mat filepath, pangolin::Image<unsigned short> & depth)
{
    int width = filepath.cols;
    int height = filepath.rows;

    pangolin::ManagedImage<unsigned short> depthRaw(width, height);

    pangolin::Image<unsigned short> depthRaw16((unsigned short*)depthRaw.ptr, depthRaw.w, depthRaw.h, depthRaw.w * sizeof(unsigned short));


//copy data 

}

谢谢。

1 个答案:

答案 0 :(得分:2)

因此,假设您已将cv :: Mat转换为具有正确音高(或OpenCV中的通道)的无符号短格式,您只需使用memcpy。

(我已经将你的cv :: Mat从filepath重命名为mat(为什么它被称为filepath?)):

memcpy((void*)depthRaw16.begin(), (void*)mat.data, mat.total() * mat.elemSize());

再次,确定你的穿山甲图片具有相同的尺寸,确定 cv :: Mat转换为无符号短文。