从图像 url 获取 ImageData/HTMLImageElement/HTMLCanvasElement 对象

Getting ImageData/HTMLImageElement/HTMLCanvasElement object from image url

我正在尝试开发一个使用 tensorflow 和 knn-classifier 对图像进行分类的程序。但是,为了训练程序,我需要获取 ImageData、HTMLImageElement 或 HTMLCanvasElement 形式的图像。

因此,我正在寻找一种方法来简单地从图像 url(例如“https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png")

可能值得一提的是,我正在使用 nodejs 进行开发。我在下面附上了一些代码来帮助解释我想要实现的目标。

const tf = require("@tensorflow/tfjs");
const mobilenetModule = require("@tensorflow-models/mobilenet");
const knnClassifier = require("@tensorflow-models/knn-classifier");

const classifer = knnClassifier.create();

async function start() {
  const mobilenet = await mobilenetModule.load();

  const pic0 = // Get image from "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png";
  const img0 = tf.browser.fromPixels(pic0);
  const logits0 = mobilenet.infer(img0, true);
  classifier.addExample(logits0, 0);

  const pic1 = // Get image from "https://www.pixsy.com/wp-content/uploads/2021/04/ben-sweet-2LowviVHZ-E-unsplash-1.jpeg";
  const img1 = tf.browser.fromPixels(pic1);
  const logits1 = mobilenet.infer(img1, true);
  classifier.addExample(logits1, 0);

  const check = await axios.get(
    "https://cryptotvnetwork.com/wp-content/uploads/2021/04/4ee1ad2ffbb00866fb7c55c61786e95d.jpg",
    { responseType: "arrayBuffer", }
  );
  const x = tf.browser.fromPixels(check);
  const xlogits = mobilenet.infer(x, true);
  const p = classifier.predictClass(xlogits);
  console.log(p);
}

start();

如果这是一个愚蠢或重复的问题,我提前表示歉意,但我在搜索期间未能找到相关内容。

加载图像后必须创建张量。

async function getImage() {
  var pic0 = new Image();
  pic0.src = 'https://www.google.com/favicon.ico';

  pic0.onload = () => {
    var img0 = tf.browser.fromPixels(pic0);
    return img0;
  }
}