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

我想使用节点indico API 。 我需要将图像转换为灰度,然后转换为包含数组/像素值行的数组。 我从哪说起呢?

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

eg [[float, float, float ... *n ], [float, float, float ... *n ], ... *n] 

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

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

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

       

网上收集的解决方案 "将图像转换为灰度像素值的行"

看起来像node的image processing工具可悲的是有点缺乏,但有一个很好的解决scheme。

get-pixels允许从URL或从本地path读取图像,并将其转换为应该在API上非常出色的ndarray

API将以get-pixels生成的格式接受RGB图像,但如果您仍然有兴趣将图像转换为灰度,这对其他应用程序可能会有所帮助,但实际上有点奇怪 。

在一个标准的RGB图像中,基本上每个颜色都有一个亮度分数,这就是颜色的亮度。 基于亮度,每个像素的灰度转换发生如下:

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

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

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

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

你需要添加逻辑除以255来转换为浮点数,然后分割成数组数组来保持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 });