opencv::使用深度图的Mat结构



我正在读取图像到cv::Mat.

cv::Mat depth_map = cv::imread("patio_depth.jpg", -1);

Mat然后被传递给这个函数:(从深度图中获取xyz坐标)。

inline cv::Point3d getPoint3D(int x, int y) const
{
    cv::Point3d point;
    point.x = depth_map.at<cv::Vec3f>(y, x)[0];
    point.y = depth_map.at<cv::Vec3f>(y, x)[1];
    point.z = depth_map.at<cv::Vec3f>(y, x)[2];
    return point;
}

导致断言错误。

Assertion failed <dims <= 2 && data && <unsigned>i0 <unsigned>size.p[0] && <unsigned><i1*DataType<_Tp>::channels>

核心 mat.hpp

我假设这意味着我正在使用的Mat与函数不兼容,但是什么Mat结构将工作?或者我需要在传递之前转换它吗?

啊,这是因为我使用的是jpg图像。(在openv论坛上回答)

'您正在读取JPG图像,因此您在depth_map中获得BGR图像,而不是float。你应该使用cv::Vec3b而不是cv::Vec3f来访问像素

相关内容

  • 没有找到相关文章

最新更新