Использование локального ‹файла изображения› для пользовательского видения Майкрософт

Я не знаю, как это сделать, но мне нужна помощь, чтобы заставить работать мое индивидуальное видение Microsoft. Я использую javascript для привязки моего html-документа к пользовательскому видению, но я не знаю, как использовать локальный файл изображения, который у меня есть в той же папке, что и мои html- и js-файлы, может ли кто-нибудь помочь мне с какими-либо кодами?

        },
        type: "POST",
        // Request body
        data: "{body}",
    })
    .done(function(data) {
        alert("success");
    })
    .fail(function() {
        alert("error");
    });
});

В инструкциях говорится, что мне нужно изменить {body} на


person samuel tan    schedule 07.04.2019    source источник
comment
* в инструкциях указано, что нужно заменить {body} на ‹файл изображения›   -  person samuel tan    schedule 07.04.2019
comment
comment
Я хочу использовать файл изображения с именем ‘scam.jpg’   -  person samuel tan    schedule 07.04.2019


Ответы (1)


Несколько моментов:

  • Последний API - v3.0 (а не 2.0, о котором вы упомянули), см. здесь
  • В образце кода, который они предоставили на странице, есть небольшая ошибка: ключ заголовка Prediction-Key присутствует 2 раза (key в верхнем регистре против нижнего). Вам просто нужно это 1 раз
  • Вы не можете напрямую загрузить локальный файл в js из соображений безопасности

Поэтому, если вы хотите сделать это «с нуля», вы можете сделать следующее, выбирая файл вручную:

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
    <input type='file' accept='image/*' onchange='openFile(event)' />
    <br />
    <img id='output' style="height:100px; width:100px;" />

    <script type="text/javascript">
        var openFile = function(file) {
            var input = file.target;

            var reader = new FileReader();
            reader.onload = function(){
                var dataURL = reader.result;

                var params = {
                    // Request parameters
                    "application": "myTestApp"
                };

                var parts = dataURL.split(';base64,');
                var contentType = parts[0].split(':')[1];
                var raw = window.atob(parts[1]);
                var rawLength = raw.length;

                var uInt8Array = new Uint8Array(rawLength);

                for (var i = 0; i < rawLength; ++i) {
                    uInt8Array[i] = raw.charCodeAt(i);
                }

                var imgContent = new Blob([uInt8Array], { type: contentType });

                $.ajax({
                    url: "https://southcentralus.api.cognitive.microsoft.com/customvision/v3.0/Prediction/__YOUR_APPLICATION_ID__/classify/iterations/__YOUR_ITERATION_ID__/image?" + $.param(params),
                    beforeSend: function(xhrObj){
                        // Request headers
                        xhrObj.setRequestHeader("Prediction-Key","__YOUR_PREDICTION_KEY__");
                        xhrObj.setRequestHeader("Content-Type","application/octet-stream");
                    },
                    type: "POST",
                    // Request body
                    data: imgContent,
                    processData: false
                })
                .done(function(data) {
                    alert("success");
                    console.log(data);
                })
                .fail(function() {
                    alert("error");
                });
            };

            reader.readAsDataURL(input.files[0]);
        };
    </script>
</body>
</html>

Кроме того, вы можете посмотреть существующие образцы в Node.js здесь, где они вызывают прогнозирование из локальных файлов: https://github.com/Azure-Samples/cognitive-services-node-sdk-samples/tree/master/Samples/customvision

person Nicolas R    schedule 08.04.2019