2

给定一个 Int 数组,一个 Argb32 图像,我怎样才能以最好的方式将它加载到 Eigen Matrixes 中?

目标是创建一个小型图像处理库。作为第一部分,我想从 RGB 转换为灰度。

有没有任何方法可以将 int[] 加载到 3 个特征矩阵中而无需任何内存复制?

(当提到特征时,它的线性代数库)。

4

1 回答 1

3

是的,使用具有适当内部跨度的 Map<> 类,例如:

unsigned char* data = ...;
int w, h; // the width and height
typedef Map<Matrix<unsigned char,Dynamic,Dynamic>, 0, InnerStride<4> > Slide;
Slice red(data, w, h), green(data+1, w, h), blue(data+2, w, h);

然后你就可以开始玩它们了,例如,构造一个灰度浮点版本:

MatrixXf gray = (red.cast<float>() * 11 + green.cast<float>() * 16 + blue.cast<float>() * 5)/(32.*255.);
于 2013-01-27T17:13:56.380 回答