如何用opencv对深度图像进行编码和解码?我使用下面的代码在webots中获取深度图像,但是失败了,非常感谢

wkftcu5l  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(176)
// `s` is the webots's rangefinder
    auto buffer = (float*)s->getRangeImage();
    cv::Mat img(cv::Size(width, height), CV_32FC1, buffer);  // image data is float*

    // check and success.
    // imshow("pic", img); 
    // cvWaitKey(0);

    // encode:
    std::vector<uchar> newBuffer;
    cv::imencode(".jpg", img, newBuffer);

    // decode
    auto img_decode = cv::imdecode(newBuffer, cv::IMREAD_UNCHANGED);

    // fail and get a black image
    imshow("pic", img_decode);
    cvWaitKey(0);

我试过在cv::imdecode函数中使用其他参数,比如cv::IMREAD_ANYDEPTH,但是失败了。我在网上搜索了很长时间。但是没有用。请帮助或者试着给予一些想法如何实现这个。

knpiaxh1

knpiaxh11#

如果您的数据是真实的,即浮点和单通道,您可以尝试写入支持该数据类型的PFM或TIFF格式图像。
正如@wohlstad在评论中提到的,JPEG是uint 8,所以只支持范围为0..255的整数。

相关问题