opencv 您所在的位置:网站首页 opencv二值化抠图 opencv

opencv

2022-12-28 19:52| 来源: 网络整理| 查看: 265

多维cv :: Mat初始化和显示 时间:2015-05-22 19:17:42

标签: opencv opencv-mat

作为一名Matlab / Python人员和C ++新手,我在使用C ++进行OpenCV以实现图像处理方面感到非常沮丧。我正在使用Kinect v2,所以我在网上找到了一个我正在修改的Windows示例。

此示例将depthMap作为cv :: Mat给出,并且我已经计算了从kinect v2获取的此深度图像上的曲面法线。该表面法线图像包含每行的i,j,k矢量分量(3个通道),col元素,并且我试图将该表面法线图像(3-D浮点矩阵)可视化为RGB图像。这在matlab中很容易做到,因为你只是做了一个imshow(normMap),它显示了一个RGB(ijk)图像,颜色指定了法线的方向。

我正在尝试用C ++做类似的事情。由于我使用的是opencv,我决定使用cv :: Mat来存储每个像素的ijk通道,并将正常矩阵(让我们称之为normMat)初始化为CV_32F矩阵,如下所示:

int sizes[3] = { height, width, 3 }; cv::Mat normMat(3, sizes, CV_32F, cv::Scalar::all(0));

但是,如果我调试,dims(normMat.rows和normMat.cols)显示-1,所以我不知道我的初始化是坏的还是我错过了什么,或者是否正常。

我将表面法线组件存储为:

normMat.at(i, j, 0) = fVec3[0]; normMat.at(i, j, 1) = fVec3[1]; normMat.at(i, j, 2) = fVec3[2];

他们似乎正在正确存储,因为我已在调试中验证过(使用normMat.at(i,j,k))。

然后我试图将图像显示为:

normMat.convertTo(normColorMap, CV_8UC3, 255.0 / (4000), 255.0 / 500); cv::imshow("Normals", normColorMap);

但是第二行抛出异常:

OpenCV Error: Assertion failed (p[-1]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有