-
Notifications
You must be signed in to change notification settings - Fork 9
/
customvision_script.js
92 lines (75 loc) · 3.25 KB
/
customvision_script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
$(function () {
var uploadedImage;
// 画像を画面に表示
var showImage = function () {
if (uploadedImage) {
var blobUrl = window.URL.createObjectURL(uploadedImage);
$("#ImageToAnalyze").attr("src", blobUrl);
}
};
//画像の分析
var getFaceInfo = function () {
// Custom Vision の Subscription Key と URL をセット
// サブスクリプション画面に表示される URL および Key をコピーしてください
var predictionKey = "YOUR_PREDICTION_KEY";
var endpoint = "https://YOUR_LOCATION.api.cognitive.microsoft.com/customvision/v3.0/Prediction/YOUR_APP_ID/classify/iterations/YOUR_APP_ITERATION/image";
// Custom Vision 呼び出し URL をセット
var webSvcUrl = endpoint;
// 画面に表示するメッセージをセット
var outputDiv = $("#OutputDiv");
if(document.getElementById('imageFile').value == "")
{
// 初期設定
outputDiv.text("画像を選択してください");
}
else{
// 画像分析中
outputDiv.text("分析中...");
}
// Face API を呼び出すためのパラメーターをセットして呼び出し
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", webSvcUrl, true);
xmlHttp.setRequestHeader("Prediction-Key", predictionKey);
xmlHttp.setRequestHeader("Content-Type", "application/octet-stream");
xmlHttp.send(uploadedImage);
xmlHttp.onreadystatechange = function () {
// データが取得出来た場合
if (this.readyState == 4 && this.status == 200) {
let data = JSON.parse(this.responseText);
// 判別結果を取得
var predictions = data.predictions;
var probability = [];
var tagName = [];
for ( var i = 0; i < predictions.length; i++ )
{
probability[i] = predictions[i].probability;
tagName[i] = predictions[i].tagName;
}
//小数点6位までを残す関数 (判別スコアの丸めに利用)
function floatFormat( number ) {
return Math.round( number * Math.pow( 10 , 6 ) ) / Math.pow( 10 , 6 ) ;
}
// 判別結果を表示
var outputText = "<h3>" + "結果:" + "</h3>";
outputText += "<table><tr><td>タグ</td><td>確度</td><tr>";
for ( var i = 0; i < predictions.length; i++ )
{
outputText += "<tr><td>" + tagName[i] + "</td><td>" + floatFormat(probability[i]) + "</td></tr>";
}
outputText += "</table>";
outputDiv.html(outputText);
}
else
// データが取得できなかった場合
{
outputDiv.text("ERROR!");
};
};
};
// 画像が変更された場合(再度分析&表示)
$("#imageFile").on('change', function(e){
uploadedImage = e.target.files[0];
showImage();
getFaceInfo();
});
});