0
こんにちは、私はグーグルビジョンapiに新しいです。私はImage上の顔を検出したい、私はnode.jsを使用しています10人以上の顔を含むローカル画像。 10個の顔のみを返すビジョンAPI。このVision APIを使用してすべての顔を検出する方法はありますか? vision node apiを参照してください。 とあなたが参照ここグーグルビジョンのapisで10人以上の顔を検出する方法
としてこの画像を撮ることができますが、私のコードです念のために誰もが、擬似コードより多くの結果を返すためにAPIを強制する解決策を考え出すだろう
function findFaceontheImage(req, res, next) {
var vision = Vision();
var inputfile = 'NASA_Astronaut_Group_15.jpg';
var outputFile = 'out.png';
vision.faceDetection({source: {filename: inputfile}})
.then(function (results) {
const faces = results[0].faceAnnotations;
console.log('Faces:');
req.body['faces']=results;
var numFaces = faces.length;
console.log('Found ' + numFaces + (numFaces === 1 ? ' face' : ' faces'));
highlightFaces(inputfile, faces, outputFile, Canvas, function (err) {
if (err) {
next()
}
console.log("Finished!");
next()
});
})
.catch(function (err) {
console.error('ERROR:', err);
});
}
function highlightFaces(inputFile, faces, outputFile, Canvas, callback) {
fs.readFile(inputFile, function (err, image) {
if (err) {
return callback(err);
}
var Image = Canvas.Image;
// Open the original image into a canvas
var img = new Image();
img.src = image;
var canvas = new Canvas(img.width, img.height);
var context = canvas.getContext("2d");
context.drawImage(img, 0, 0, img.width, img.height);
// Now draw boxes around all the faces
context.strokeStyle = "rgba(0,255,0,0.8)";
context.lineWidth = "5";
faces.forEach(function (face) {
context.beginPath();
var origX = 0;
var origY = 0;
face.boundingPoly.vertices.forEach(function (bounds, i) {
if (i === 0) {
origX = bounds.x;
origY = bounds.y;
}
context.lineTo(bounds.x, bounds.y);
});
context.lineTo(origX, origY);
context.stroke();
});
// Write the result to a file
console.log("Writing to file " + outputFile);
var writeStream = fs.createWriteStream(outputFile);
var pngStream = canvas.pngStream();
pngStream.on("data", function (chunk) {
writeStream.write(chunk);
});
pngStream.on("error", console.log);
pngStream.on("end", callback);
});
}
まず、10個の結果しか返されない理由を調べる(または自分の情報を共有する)べきです。 ** A **:通話に制限がありますか?** B **:10人の顔しか検出されていませんか?私はAPI-docsが好きではありませんが、ケースAではいくつかの制限があります(デフォルト値ではありません)。また、ケースBに必要な確実性を制御するためのしきい値もあります。 – sascha