如何从图像获取张量

时间:2018-08-15 21:44:31

标签: tensorflow.js

我有一个图像,我想从中获得张量。

某些图像已经在前端服务器上,而其他图像将由服务器提供

1 个答案:

答案 0 :(得分:1)

为此,需要使用fromPixels

如果图像已经显示在html页面中 您可以考虑使用querySelector首先获取图片,然后可以使用fromPixels

html

<img id="my-image" src="mydata.jpg">

js

const image = document.querySelector("#my-image")
const t = tf.fromPixels(image)

如果该图像不在html页面中,则可以使用构造函数Image创建它,然后将其作为参数传递给fromPixels

const im = new Image()
im.src = "url-of-the-image"
document.body.appendChild(im)
im.onload = () => {
  const a = tf.fromPixels(im, 4)
  a.print()
  console.log(a.shape)
}

onload在将图像转换为张量之前,请确保图像已完成下载。

如果图像URL和提供前端页面的URL不同,则在创建张量时将出现cross-origin问题。如果服务器使用允许前端检索该图像的访问控制来为图像提供服务,则设置图像的crossOrigin属性将解决此问题,否则将无法采取任何措施来从该张量获取张量图片。

const im = new Image()
im.crossOrigin = "anonymous";
im.src = "https://i.imgur.com/lVlPvCB.gif"
document.body.appendChild(im)
im.onload = () => {
  const a = tf.fromPixels(im, 4)
  a.print()
  console.log(a.shape)
}
<html>
  <head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tensorflow/0.12.4/tf.js"> </script>
  </head>

  <body>
  </body>
</html>