将 cv::Mat 转换为穿山甲::图像

Convert a cv::Mat to a pangolin::Image?

本文关键字:穿山甲 图像 Mat cv 转换      更新时间:2023-10-16

我有一个应用程序可以接收pangolin::Image格式的rgbd图像。我想发送一个cv::Mat.如何将 cv::Mat 转换为穿山甲::图像?

(穿山甲: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 
}

谢谢。

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

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

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

同样,请确保您的穿山甲图像具有相同的尺寸,并确保将 cv::Mat 转换为无符号短裤。