opencv | 您所在的位置:网站首页 › opencv二值化抠图 › opencv |
多维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 实验室设备网 版权所有 |