【问题标题】:resizing and changing to gray scale调整大小并更改为灰度
【发布时间】:2020-10-05 20:15:23
【问题描述】:

我正在尝试拍摄 jpg 照片,并将其设置为灰度并将其调整为 48x48 以供我的模型使用, 我试过了,但它不起作用:

let image = require("../assets/angry.jpg");
      const imageAssetPath = Image.resolveAssetSource(image);
      const response = await fetch(imageAssetPath.uri, {}, { isBinary: true });
      const imageData = await response.arrayBuffer();
      let imageTensor = imageToTensor(imageData);
      const imageResize = tf.image.resizeBilinear(imageTensor, [48, 48], true);



  const imageToTensor = (rawData: ArrayBuffer) => {
    const { width, height, data } = jpeg.decode(rawData, true);
    const buffer = new Uint8Array(width * height * 3);
    let offset = 0;
    for (let i = 0; i < buffer.length; i += 3) {
      buffer[i] = data[offset]; //red
      buffer[i + 1] = data[offset + 1]; //green
      buffer[i + 2] = data[offset + 2]; //blue
      offset += 4; //skips Alpha value
    }
    return tf.tensor4d(buffer, [1, height, width, 3]);
  };

图像正在调整为 48x48,但如何使其成为灰度?我尝试在 imageToTensor 函数中将数组更改为 [height,width,1] 但它只会弄乱图片,有什么建议吗?

【问题讨论】:

标签: javascript react-native tensorflow keras tensorflow.js


【解决方案1】:

我不知道缺少这么多方法! 可以在python中查看rgb_to_grayscale的出处 您会看到它们如何将 rgb 图像转换为灰度图像。

我尝试在 javascript 中以相同的方式实现它,但没有名为 tf.tensordot 的函数。

你可以这样做。

image = tf.ones([224, 224, 3])
rgb_weights = [0.2989, 0.5870, 0.1140]
image = tf.mul(image, rgb_weights)
image = tf.sum(image, axis=-1)
image = tf.expandDims(image, axis=-1)

【讨论】:

  • 感谢您的回答,但我需要它在 javascript 而不是 python 中
  • @AlexK 我完全改变了答案。看看吧。
  • 嗨!感谢你的回答!!但是axis=-1不是一个有效的语法,是'axis=1'还是什么?
  • 找到了,而不是axis=-1,它只是-1,谢谢!!
猜你喜欢
  • 2021-10-19
  • 1970-01-01
  • 2011-11-15
  • 2013-01-16
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多