gpt4 book ai didi

node.js - 将base64图像转换为张量

转载 作者:行者123 更新时间:2023-12-05 01:36:39 25 4
gpt4 key购买 nike

我将图像作为 base64 字符串发送到 Node Express 服务器,以使用 TensorFlow 分析对象检测。如何在 node js 中使用 cocossd 模型将 base64 图像更改为对象检测的张量。

最佳答案

服务器端 NodeJs

base64 字符串可以转换为二进制,然后使用 tf.node 读取为张量

 const b = Buffer.from(base64str, 'base64')
// get the tensor
const t = tf.node.decodeImage(b)

如果请求中没有发送其他属性/值,最好在 post 请求或 websocket 中直接将图像作为二进制文件发送。在那种情况下,就不需要从 base64 服务器端重做转换

浏览器端

const b = atob(base64str)
let byteNumbers = new Array(b.length);
for (let i = 0; i < b.length; i++) {
byteNumbers[i] = b.charCodeAt(i);
}
let tensor = tf.tensor(byteNumbers)

第一个选项是同步的。对于大图像,它可能会卡住主线程。为了缓解这种情况,可以在网络 worker 中完成此操作。

另一种选择是创建一个图像元素并将其 href 属性设置为 base64str,然后使用 tf.browser.fromPixels

function load(url){
return new Promise((resolve, reject) => {
const im = new Image()
im.crossOrigin = 'anonymous'
im.src = 'url'
im.onload = () => {
resolve(im)
}
})
}

// use the load function inside an async function

(async() => {
const image = await load(url)
let tensor = await tf.browser.fromPixels(image)
})()

关于node.js - 将base64图像转换为张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61758368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com