我的代码的目标是 1)用户将发送图像 URL 2)机器人读取 URL 3)机器人将图像保存到“images”文件夹中 4)机器人使用 tfjs 将图像转换为张量 5)机器人使用COCO-SSD JS作为预训练模型(以图像张量为参数)并打印然后发送结果。
现在,我的问题是,每当我尝试使用图像的 URL 保存图像时,我都会得到一个程序和 Windows 都无法读取的文件!
它工作过一次,能够打开和使用文件。但现在返回 Windows 10 无法读取 .PNG 或 .JPG 文件的文件。
这是我的代码:
const {Client, MessageAttachment} = require('discord.js');
const bot = new Client();
const tf = require('@tensorflow/tfjs-node');
const ts = require('@tensorflow/tfjs-core');
require('@tensorflow/tfjs-backend-cpu');
require('@tensorflow/tfjs-backend-webgl');
const coco = require('@tensorflow-models/coco-ssd');
const fs = require('fs');
const fetch = require("node-fetch");
const https = require('https');
const request = require('request');
bot.on('message', gotMessage);
function gotMessage(msg) {
if(msg.content === '!object') {
const attachments = (msg.attachments).array();
const filepath = "./images/" + Date.now() + "J" + ".jpg";
console.log(filepath);
const imageurl = attachments[0].url;
saveImageToDisk(imageurl,filepath)
const img_buffer = fs.readFileSync(filepath)
const img = tf.node.decodeImage(img_buffer)
coco.load().then(model => {
// detect objects in the image.
model.detect(img).then(predictions => {
console.log('Predictions: ', predictions);
});
});
msg.reply('Enjoy');
msg.channel.send(attachments[0].url);
}
}
function saveImageToDisk(url,path) {
var fullUrl = url;
var localPath = fs.createWriteStream(path);
var request = https.get(fullUrl,function(response) {
console.log(response)
response.pipe(localPath)
});
}
PS:后面的“J”Date.now()是有意的。
慕标5832272
相关分类