首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TensorflowJs -带因子的渐强图像

TensorflowJs -带因子的渐强图像
EN

Stack Overflow用户
提问于 2021-06-10 13:06:36
回答 2查看 313关注 0票数 0

是否可以使用TensorflowJs在Javascript中实现相同的Python操作?

代码语言:javascript
复制
from tensorflow.keras.preprocessing.image import ImageDataGenerator

test_datagen = ImageDataGenerator(rescale=1./255) # NOTE: Re-scaling operation as part of the pre-processing step

我试图在浏览器中运行一个自定义模型,但它需要这个预处理步骤,然后才能将它提供给tensorflowjs。它要求我将图像重放1/255倍。

知道我怎么能做到这一点吗?

我在tersorflowjs中找不到任何东西,所以决定尝试使用opencvjs,但我不太确定这是否有同样的效果:

代码语言:javascript
复制
function rescaleImg(img, canvasId) {
      const src = cv.imread(img);

      let dst = new cv.Mat();

      let dsize = new cv.Size(
        parseFloat((src.rows * (1 / 255)) / 100),
        parseFloat((src.cols * (1 / 255)) / 100)
      );

      cv.resize(src, dst, dsize, 1 / 255, 1 / 255, cv.INTER_AREA);

      cv.imshow(canvasId, dst);
      src.delete();
      dst.delete();
    }

然后将图像传递给tensorflowjs,如下所示:

代码语言:javascript
复制
const shapeX = 150;
const shapeY = 150;
rescaleImg(image, id);
const canvas = document.getElementById(id);

tensor = tf.browser
 .fromPixels(canvas)
 .resizeNearestNeighbor([shapeX, shapeY])
 .expandDims(0)
 .toFloat();
}

const prediction = await model.predict(tensor).data();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-10 16:05:08

"rescale“和"resize”是两种不同的操作。"rescale“修改像素值,而”调整大小“修改图像大小(是的,也是因为插值而产生的像素值,但这只是一个副作用)。

要“刷新”OpenCV中的图像,您可以使用带有可选缩放因子的convertTo

此外,在重新计算时,需要确保使用正确的基础数据类型来保存新值。

像这样的事情应该有效:

代码语言:javascript
复制
const src = cv.imread(img);
let dst = new cv.Mat();

// rescale by 1/255, and hold values in a matrix with float32 data type
src.convertTo(dst, cv.CV_32F, 1./255.); 

cv.imshow(canvasId, dst);
票数 1
EN

Stack Overflow用户

发布于 2021-06-10 14:09:22

到目前为止,我已经习惯于使用opencvJs实现以下功能:

代码语言:javascript
复制
function rescaleImg(img, canvasId) {
      try {
        const src = cv.imread(img);

        let dst = new cv.Mat();

        let dsize = new cv.Size(src.rows, src.cols);

        cv.resize(src, dst, dsize, 1 / 255, 1 / 255, cv.INTER_AREA);

        cv.imshow(canvasId, dst);
        src.delete();
        dst.delete();
      } catch (e) {
        console.log("Error running resize ", e);
        throw e;
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67921779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档