我有一个应用程序,它接受pangolin::Image格式的rgbd图像。我想寄一个cv::Mat。如何将cv::Mat转换为穿山甲::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);
从frame到firstRaw的转换是什么
我的开头是这样的:
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
}谢谢。
发布于 2017-10-10 11:23:39
因此,假设您已经将cv::Mat转换为带有正确音调(或OpenCV中的通道)的未签名短格式,则只需使用memcpy。
(我已将您的cv::Mat从filepath重命名为mat (为什么称为filepath?):
memcpy((void*)depthRaw16.begin(), (void*)mat.data, mat.total() * mat.elemSize());同样,请确定您的穿山甲图像有相同的尺寸,并且确定的cv::Mat被转换为未签名的短。
https://stackoverflow.com/questions/46663555
复制相似问题