将图像转换为灰度像素值行

时间:2015-03-20 21:41:23

标签: node.js indico

我想使用node indico API。我需要将图像转换为灰度,然后转换为包含数组/行像素值的数组。我从哪里开始?

  

这些工具采用特定的图像格式,列表列表   子列表包含对应于n个像素的值的“行”   图像。

e.g. [[float, float, float ... *n ], [float, float, float ... *n ], ... *n]
  

由于像素往往由RGBA值表示,因此您可以使用   以下公式转换为灰度。

Y = (0.2126 * R + 0.7152 * G + 0.0722 * B) * A
  

我们正在努力自动缩放图像,但目前正是如此   由您提供方形图像

2 个答案:

答案 0 :(得分:4)

看起来node的图像处理工具有点遗憾,但有一个很好的解决方案。

get-pixels允许从网址或本地路径中读取图片,并将其转换为适用于API的ndarray

API将接受get-pixels生成它们的格式的RGB图像,但如果您仍然有兴趣将图像转换为灰度图像,这对其他应用程序有帮助,它实际上是有用的一个little strange

在标准RGB图像中,基本上为每种颜色赋予了亮度分数,这是颜色出现的亮度。根据亮度,每个像素的灰度转换如下:

Grayscale = 0.2126*R + 0.7152*G + 0.0722*B

API很快也会支持直接使用网址,敬请关注。

答案 1 :(得分:3)

我维护sharp Node.js模块,可以让你更接近你需要的东西。

以下示例将input转换为灰度并生成Buffer整数值,每像素一个字节。

你需要添加逻辑除以255以转换为float然后拆分成数组数组以保持Indico API满意。

sharp(input)
  .resize(width, height)
  .grayscale()
  .raw()
  .toBuffer(function(err, data) {
    // data is a Buffer containing uint8 values (0-255)
    // with each byte representing one pixel
  });