给定一个 Int 数组、一个 Argb32 图像,我如何以最佳方式将其加载到特征矩阵中?
目标是创建一个小型图像处理库。作为第一部分,我想从 RGB 转换为灰度。
有没有办法将 int[] 加载到 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.);
关于c++ - 如何将 Argb32 加载到 Eigen Matrix 中以获得最佳性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14547788/