0

我有一组尺寸相同并代表相同对象但有一些光线差异的图像。我想使用所有图像逐个像素地研究这些差异。我想将它们堆叠成一个 3d 数组,作为具有许多通道的多通道 Mat。我们可以说 (x,y) 是每个图像内像素的坐标,而 (x,y,z) 是 Mat 中第 z 个通道的 (x,y) 点的坐标。

我正在寻找一种使用 (x,y) 坐标索引平行六面体的方法,以便获取 z 方向上的值数组。换句话说,我正在寻找一种方法:

Mat 3dMat; // previously initialized as a 3d stack of images
std::vector<byte> z_values = 3dMat.z_vec(x,y); // pseudo-code to explain what I'm trying to achieve

任何想法?预先感谢您的关注。

4

1 回答 1

0

您必须创建一个数据类型,该数据类型具有您的垫子应具有的通道大小/数量。因此,您可以使用 OpenCV 类型,例如

Mat image(size,CV_8UC3);  // 3 -channel mat
cv::Point3_<uchar> val = image.at<cv::Point3_<uchar> >(row,column);

或者您创建自己的:

struct MyType{ uchar x,y,z; };
MyType val = image.at<MyType>(row,column);

我认为您不能直接使用向量类型。您可以使用指针,但这似乎不是您想要的。

于 2013-03-28T22:43:51.393 回答