-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript.js
More file actions
76 lines (67 loc) · 3.55 KB
/
javascript.js
File metadata and controls
76 lines (67 loc) · 3.55 KB
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
Blockly.JavaScript['face_load'] = function (block) {
// TinyYolov2Model 官方已逐漸不使用,已不在源碼中提供 weights 資料,而改用 tiny_face_detector 取代。
// tiny_face_detector 是基於 TinyYolov2Model 上,優化改進而來的 model。
// 拿掉 ssd_mobilenetv1,在 window OS 下,若未載入 tiny_face_detector 時,會發生只能偵測半邊畫面的情況。
var dropdown_model = block.getFieldValue('model');
var MODEL_TYPE = {
"0": '',
"1": 'tiny_face_detector',
"2": '', // TinyYolov2Model,相容舊的寫法。空值,使用預設的 model
"3": 'mtcnn'
};
var code;
if (MODEL_TYPE[dropdown_model]) {
code = `await faceAPI.loadModel("${MODEL_TYPE[dropdown_model]}");\n`;
} else {
code = `await faceAPI.loadModel();\n`;
}
return code;
};
Blockly.JavaScript['face_get_description'] = function (block) {
var face_URL = Blockly.JavaScript.valueToCode(block, 'description', Blockly.JavaScript.ORDER_ATOMIC);
var code = "await faceAPI.getDescription(" + face_URL + ")"
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['face_get_emotion'] = function (block) {
var face_URL = Blockly.JavaScript.valueToCode(block, 'emotion', Blockly.JavaScript.ORDER_ATOMIC);
var code = "await faceAPI.getEmotion(" + face_URL + ")"
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['face_get_age'] = function (block) {
var face_URL = Blockly.JavaScript.valueToCode(block, 'age', Blockly.JavaScript.ORDER_ATOMIC);
var code = "(await faceAPI.getAgeAndGender(" + face_URL + ")).age"
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['face_get_gender'] = function (block) {
var face_URL = Blockly.JavaScript.valueToCode(block, 'gender', Blockly.JavaScript.ORDER_ATOMIC);
var code = "(await faceAPI.getAgeAndGender(" + face_URL + ")).gender"
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['face_get_euclideanDistance'] = function (block) {
var face1 = Blockly.JavaScript.valueToCode(block, 'faceA', Blockly.JavaScript.ORDER_ATOMIC);
var face2 = Blockly.JavaScript.valueToCode(block, 'faceB', Blockly.JavaScript.ORDER_ATOMIC);
var code = "await faceAPI.euclideanDistance(" + face1 + "," + face2 + ")";
return [code, Blockly.JavaScript.ORDER_NONE];
};
//https://blockly-demo.appspot.com/static/demos/blockfactory_old/index.html#g73ris
Blockly.JavaScript['face_get_camera'] = function (block) {
var variable_camera = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('camera'), Blockly.Variables.NAME_TYPE);
var checkbox_rotate = block.getFieldValue('rotate') == 'TRUE';
var text_src = block.getFieldValue('src');
var code = variable_camera + ' = createCamera("' + text_src + '",300,225,' + checkbox_rotate + ', function(img){\n';
code += ' ' + variable_camera + ".blobData = img;\n";
code += '});\n';
return code;
};
Blockly.JavaScript['face_get_canvas'] = function (block) {
var variable_canvas = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('camera'), Blockly.Variables.NAME_TYPE);
var code = variable_canvas + '.blobData';
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['face_get_landmarks'] = function (block) {
var face_URL = Blockly.JavaScript.valueToCode(block, 'landmarks', Blockly.JavaScript.ORDER_ATOMIC);
var dropdown_index = block.getFieldValue('index');
var dropdown_val_type = block.getFieldValue('val_type');
var code = "await faceAPI.getLandmarks(" + face_URL + ", " + dropdown_index + ", '" + dropdown_val_type + "')";
return [code, Blockly.JavaScript.ORDER_NONE];
};