使用 OpenCV 多通道 Mat 沿通道方向访问像素
Posted
技术标签:
【中文标题】使用 OpenCV 多通道 Mat 沿通道方向访问像素【英文标题】:Access pixel along channels direction with OpenCV multichannel Mat 【发布时间】:2013-03-28 16:20:42 【问题描述】:我有一组相同大小的图像,代表相同的对象,但有一些光线差异。我想使用所有图像逐个像素地研究这些差异。 我想将它们堆叠成一个 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
有什么想法吗? 提前感谢您的关注。
【问题讨论】:
为什么不使用“vector您必须创建一个数据类型,该数据类型具有您的垫子应具有的通道大小/数量。因此,您可以使用 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);
我不认为你可以直接使用向量类型。您可以使用指针,但这似乎不是您想要的。
【讨论】:
以上是关于使用 OpenCV 多通道 Mat 沿通道方向访问像素的主要内容,如果未能解决你的问题,请参考以下文章