问题描述
我需要构建一个由(R,G,B)像素组成的3d立方体,以使R,G和B的值等于它们在该立方体中的索引。
例如在Cube [0,0],我应该找到黑色的像素(0,0),而在Cube [255,255,255],像素值应该是(255,255)或白色。 实际上,多维数据集应将所有可能的颜色存储在8位中。
为此,我已经看到Armadillo库具有/storage
类型。
因此,我认为将每个像素存储在field
中并从中构建和填充3D字段是合理的,就像这样:
Col<size_t>
但是,当我尝试在外部循环之后访问元素时,会得到错误的结果(请参见上面的代码)。
有人可以解释这种行为吗?在for循环之后,我缺少什么来检索正确的值?
我本可以用OpenCV轻松完成任务,但是我编写的代码是我无法使用的项目的一部分。
我正在使用Armadillo 9.900和Visual Studio 2017。
解决方法
operator[]
仅适用于单个参数。因此,my_cube[i,j,k]
是错误的。
您提到my_cube(0,0).print()
或my_cube.at(0,0).print()
也显示了相同的问题,但是他们做对了。但是,您还需要在分配过程中使用其中任何一个。将my_cube[i,k] = px;
更改为my_cube(i,k) = px;
或my_cube.at(i,k) = px;
,它将起作用。