santAI
This commit is contained in:
@@ -2,6 +2,7 @@ import * as Blockly from 'blockly/core';
|
||||
const AI_LOCAL_VOICE_HUE = '#2FAD7A';
|
||||
const AI_LOCAL_GRAPH_HUE = '#90A244';
|
||||
const IOT_HUE = '#526FC3';
|
||||
const DISPLAY_ONBOARD_HUE = '#569A98';
|
||||
|
||||
//voice part
|
||||
export const VOICE_RECOGNITION_CONTROL = {
|
||||
@@ -270,11 +271,27 @@ export const CREATE_CAMERA = {
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SMARTCAMERA)
|
||||
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SHOOTING_SIZE)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
['LCD : 240px*240px', "LCD"],
|
||||
['240px*240px', "R240*240"],
|
||||
['320px*320px', "R320*320"],
|
||||
['128px*128px', "R128*128"],
|
||||
['96px*96px', "R96*96"],
|
||||
['VGA : 640px*480px', "VGA"],
|
||||
['HVGA : 480px*320px', "HVGA"],
|
||||
['QVGA : 320px*240px', "QVGA"],
|
||||
['QQVGA : 160px*120px', "QQVGA"]
|
||||
]), "cmd")
|
||||
]), "cmd");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_HORIZONTAL_MIRRORING)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"]
|
||||
]),"hm");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_VERTICAL_MIRRORING)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"]
|
||||
]),"vf");
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
@@ -287,6 +304,16 @@ export const SHOOT_AND_SAVE_PICTURE = {
|
||||
this.appendValueInput('direct')
|
||||
.appendField(Blockly.Msg.MIXLY_SHOOT_AND_SAVE_PICTURE)
|
||||
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
|
||||
this.appendValueInput('quality')
|
||||
.appendField(Blockly.Msg.MIXLY_IMAGE_QUALITY);
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
['0','0'],
|
||||
['90','90'],
|
||||
['180','180'],
|
||||
['270','270']
|
||||
]),'angle');
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
@@ -308,12 +335,63 @@ export const GET_PICTURE_DATA_EXACT = {
|
||||
}
|
||||
};
|
||||
|
||||
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
|
||||
export const GET_PICTURE_DATA_WHS = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT);
|
||||
this.appendValueInput('boolean');
|
||||
.appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_WIDTH,"get_pixel_width"],
|
||||
[Blockly.Msg.MIXLY_HEIGHT,"get_pixel_height"],
|
||||
[Blockly.Msg.MIXLY_SMARTCAMERA + Blockly.Msg.MIXLY_MODEL_NUMBER ,"get_sensor_name"]
|
||||
]),"kind")
|
||||
this.setOutput(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT)
|
||||
// this.appendValueInput('direct')
|
||||
// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_IMAGE)
|
||||
// .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
|
||||
// this.appendDummyInput('')
|
||||
// .appendField('(' + Blockly.Msg.MIXLY_ONLY + Blockly.Msg.MIXLY_SUPPORT + 'jpg/jpeg)')
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.MIXLY_SYNC_DISPLAY)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "0"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "1"]
|
||||
]),"sync");
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const SCREEN_DISPLAY_IMAGE = {
|
||||
init: function () {
|
||||
this.setColour(DISPLAY_ONBOARD_HUE);
|
||||
this.appendValueInput('direct')
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_IMAGE)
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
['0','0'],
|
||||
['90','90'],
|
||||
['180','180'],
|
||||
['270','270']
|
||||
]),'angle');
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.MIXLY_SYNC_DISPLAY)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "0"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "1"]
|
||||
]),"sync");
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
@@ -329,11 +407,11 @@ export const AI_CAMERA_INIT = {
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "CODE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "COLOR_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION, "CAT_FACE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FACE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_AipFace, "FACE_RECOGNITION"]
|
||||
[Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "QRReader"],
|
||||
[Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "ColorDetector"],
|
||||
[Blockly.Msg.MIXLY_CAT + Blockly.Msg.MIXLY_RECOGNITION, "CatDetector"],
|
||||
[Blockly.Msg.MIXLY_HUMAN + Blockly.Msg.MIXLY_RECOGNITION, "HumanDetector"],
|
||||
[Blockly.Msg.MIXLY_AipFace, "FaceDetector"]
|
||||
]), "kind");
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
@@ -341,11 +419,301 @@ export const AI_CAMERA_INIT = {
|
||||
}
|
||||
};
|
||||
|
||||
export const AI_CAMERA_INIT_FACERECOGNIZE = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
|
||||
.appendField(Blockly.Msg.MIXLY_FACE_RECOGNIZER);
|
||||
this.appendValueInput("PATH")
|
||||
.appendField(Blockly.Msg.PATH_OF_FACE_DATABASE);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
}
|
||||
};
|
||||
|
||||
export const MODEL_LOGOUT = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_LOGOUT)
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
}
|
||||
};
|
||||
|
||||
export const MODEL_RUN = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendValueInput("FRAME")
|
||||
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.MIXLY_AipImageClassify_Image)
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const MODEL_WHETHER_RUN_SUCCEED = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION)
|
||||
this.appendDummyInput("")
|
||||
.appendField( Blockly.Msg.MIXLY_WHETHER + Blockly.Msg.MIXLY_SUCCESS)
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_HOW_MUCH_RECOGNITION = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_GET +Blockly.Msg.MIXLY_HOW_MUCH)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
|
||||
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
|
||||
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
|
||||
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
|
||||
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
|
||||
]), "kind");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_BE_IDENTIFIED);
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_NO_RECOGNITION = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendValueInput("NO")
|
||||
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
|
||||
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
|
||||
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
|
||||
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
|
||||
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
|
||||
]), "kind");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.OLED_STRING);
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_NO_CAT_OR_FACE_RECOGNITION = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendValueInput("NO")
|
||||
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
|
||||
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
|
||||
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
|
||||
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
|
||||
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
|
||||
]), "kind");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_CONFIDENCE_DEGREE);
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_NO_XY_RECOGNITION = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendValueInput("NO")
|
||||
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
|
||||
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
|
||||
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
|
||||
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
|
||||
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
|
||||
]), "kind");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_POSITION_XY)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
["x","0"],
|
||||
["y","1"],
|
||||
["w","2"],
|
||||
["h","3"],
|
||||
[Blockly.Msg.MIXLY_ALL + '(x,y,w,h)',"all"]
|
||||
]),"coord");
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_NO_XY_RECOGNITION_FACE = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendValueInput("NO")
|
||||
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
|
||||
.appendField(Blockly.Msg.MIXLY_FACE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_POSITION_XY)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_LEFT_EYE,"[0,1]"],
|
||||
[Blockly.Msg.MIXLY_RIGHT_EYE,"[2,3"],
|
||||
[Blockly.Msg.MIXLY_NOSE,"[4,5"],
|
||||
[Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"[6,7]"],
|
||||
[Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"[8,9"],
|
||||
[Blockly.Msg.MIXLY_ALL ,"all"]
|
||||
]),"part")
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_NO_FACE_RECOGNITION_INFO = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput("SUB")
|
||||
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
|
||||
this.appendValueInput("NO")
|
||||
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE + Blockly.Msg.MIXLY_DE)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_FACE_ID,"id"],
|
||||
[Blockly.Msg.MILXY_FACE_SIMILARITY,"similarity"],
|
||||
[Blockly.Msg.MIXLY_FACE_NAME,"name"]
|
||||
]),"kind");
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const Register_color_recognition_fixed = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.HTML_COLOUR)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.COLOUR_RGB_RED,"red"],
|
||||
[Blockly.Msg.COLOUR_RGB_GREEN,"green"],
|
||||
[Blockly.Msg.COLOUR_RGB_BLUE,"blue"],
|
||||
[Blockly.Msg.COLOUR_YELLOW,"yellow"],
|
||||
[Blockly.Msg.COLOUR_CYAN,"cyan"],
|
||||
[Blockly.Msg.COLOUR_RGB_PURPLE,"purple"],
|
||||
[Blockly.Msg.COLOUR_BLACK,"black"],
|
||||
[Blockly.Msg.COLOUR_WHITE,"white"]
|
||||
]),"color");
|
||||
this.appendValueInput("AREA")
|
||||
.appendField(Blockly.Msg.MINIMUN_DETECTABLE_AREA);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
}
|
||||
};
|
||||
|
||||
export const Register_color_recognition = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.REGUSTER_COLOR_RECOGNITION)
|
||||
this.appendValueInput("MIN")
|
||||
.appendField('H、S、V' + Blockly.Msg.blockpy_TUPLE_MIN);
|
||||
this.appendValueInput("MAX")
|
||||
.appendField('H、S、V' + Blockly.Msg.blockpy_TUPLE_MAX);
|
||||
this.appendValueInput("COLOR")
|
||||
.appendField(Blockly.Msg.HTML_COLOUR + Blockly.Msg.MIXLY_NAME)
|
||||
this.appendValueInput("AREA")
|
||||
.appendField(Blockly.Msg.MINIMUN_DETECTABLE_AREA);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
}
|
||||
};
|
||||
|
||||
export const REGISTER_NEW_FACE = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.register_a_new_face_in_the_database);
|
||||
this.appendValueInput("NAME")
|
||||
.appendField(Blockly.Msg.MICROPYTHON_HUSKYLENS_NAME);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const DELETE_FACE_FROM_DATABASE = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.delete_the_face_from_the_database);
|
||||
this.appendValueInput("ID")
|
||||
.appendField('id');
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const PRINT_FACE_DATABASE = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
|
||||
.setCheck("var");
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.print_the_contents_of_the_face_database);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const GET_QR_CODE_RECOGNITION_DATA = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendValueInput('SUB')
|
||||
this.appendValueInput('SUB')
|
||||
.setCheck("var");
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_GET_QR_CODE_RECOGNITION_RESULT);
|
||||
|
||||
@@ -124,15 +124,19 @@ export const CI130X_BROADCAST_SYSTEM_TIME = function (_, generator) {
|
||||
//graph part
|
||||
export const CREATE_CAMERA = function (_, generator) {
|
||||
var version = Boards.getSelectedBoardKey().split(':')[2];
|
||||
generator.definitions_['import_camera'] = 'import camera';
|
||||
generator.definitions_['import_Camera_FrameSize_PixelFormat'] = 'from camera import Camera,FrameSize,PixelFormat';
|
||||
var cmd = this.getFieldValue('cmd');
|
||||
var code = 'cam = camera.GC032A(camera.' + cmd + ')\n';
|
||||
var hm = this.getFieldValue('hm');
|
||||
var vf = this.getFieldValue('vf');
|
||||
var code = 'cam = Camera(FrameSize.' + cmd + ',hmirror='+ hm + ',vflip='+ vf +')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const SHOOT_AND_SAVE_PICTURE = function (_, generator) {
|
||||
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
|
||||
var code = 'cam.snapshot(' + direct + ')\n';
|
||||
var q = generator.valueToCode(this, 'quality', generator.ORDER_ATOMIC);
|
||||
var a = this.getFieldValue('angle');
|
||||
var code = 'cam.snapshot(' + direct + ',quality='+ q + ',rotation=' + a + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -143,17 +147,166 @@ export const GET_PICTURE_DATA_EXACT = function (_, generator) {
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_PICTURE_DATA_WHS = function (_, generator) {
|
||||
var kind = this.getFieldValue('kind');
|
||||
var code = 'cam.' + kind +'()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
|
||||
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
|
||||
var code = 'cam.display(show='+ bool +')\n';
|
||||
var s = this.getFieldValue('sync');
|
||||
var code = 'onboard_tft.display(data, sync='+ s +')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const SCREEN_DISPLAY_IMAGE = function (_, generator) {
|
||||
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
|
||||
var a = this.getFieldValue('angle');
|
||||
var s = this.getFieldValue('sync');
|
||||
var code = 'onboard_tft.display(' + direct + ',rotation=' + a + ',sync='+ s + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const AI_CAMERA_INIT = function (_, generator) {
|
||||
generator.definitions_['import_ai_camera'] = 'import ai_camera';
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl';
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var cmd = this.getFieldValue('kind');
|
||||
var code = sub +' = ai_camera.AI(ai_camera.' + cmd + ')\n';
|
||||
var code = sub +' = esp_dl.'+cmd + '(width=cam.get_pixel_width(), height=cam.get_pixel_height())\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const AI_CAMERA_INIT_FACERECOGNIZE = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl';
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var path = generator.valueToCode(this, 'PATH', generator.ORDER_ATOMIC);
|
||||
var code = sub +' = esp_dl.FaceRecognizer(width=cam.get_pixel_width(), height=cam.get_pixel_height(), db_path='+ path +')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const MODEL_LOGOUT = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var code = 'del '+sub + '\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const MODEL_RUN = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var frame = generator.valueToCode(this, 'FRAME', generator.ORDER_ATOMIC);
|
||||
var code = sub + '.run(' + frame +')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const MODEL_WHETHER_RUN_SUCCEED = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
|
||||
var code = 'esp_dl.analyze(' + sub +')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_HOW_MUCH_RECOGNITION = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var code = 'esp_dl.analyze(' + sub +',"len")';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_NO_RECOGNITION = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var no = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
|
||||
var code = 'esp_dl.analyze(' + sub +',"data",'+ no + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_NO_XY_RECOGNITION = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var no = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
|
||||
var coord = this.getFieldValue('coord');
|
||||
if(coord == "all"){
|
||||
var code = 'esp_dl.analyze(' + sub +',"box",'+ no + ')';
|
||||
}else{
|
||||
var code = 'esp_dl.analyze(' + sub +',"box",'+ no + ')['+ coord +']';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_NO_XY_RECOGNITION_FACE = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var no = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
|
||||
var part = this.getFieldValue('part');
|
||||
if(part == "all"){
|
||||
var code = 'esp_dl.analyze(' + sub +',"features",'+ no + ')';
|
||||
}else{
|
||||
var code = 'esp_dl.analyze(' + sub +',"features",'+ no + ')' +part;
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET_NO_CAT_OR_FACE_RECOGNITION = function (_, generator) {
|
||||
generator.definitions_['import_esp_dl'] = 'import esp_dl'
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var no = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
|
||||
var code = 'esp_dl.analyze(' + sub +',"score",'+ no + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const Register_color_recognition_fixed= function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var color = this.getFieldValue('color');
|
||||
var area = generator.valueToCode(this, 'AREA', generator.ORDER_ATOMIC);
|
||||
if (color == "red"){
|
||||
var code = sub + '.register_color((170, 100, 100), (10, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "green"){
|
||||
var code = sub + '.register_color((35, 100, 100), (85, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "blue"){
|
||||
var code = sub + '.register_color((100, 100, 100), (130, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "yellow"){
|
||||
var code = sub + '.register_color((20, 100, 100), (35, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "cyan"){
|
||||
var code = sub + '.register_color((85, 100, 100), (100, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "purple"){
|
||||
var code = sub + '.register_color((130, 100, 100), (150, 255, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "black"){
|
||||
var code = sub + '.register_color((0, 0, 0), (180, 255, 50),'+ color +', area_threshold='+ area + ')\n';
|
||||
}else if(color == "white"){
|
||||
var code = sub + '.register_color((0, 0, 200), (180, 50, 255),'+ color +', area_threshold='+ area + ')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export const Register_color_recognition = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var min = generator.valueToCode(this, 'MIN', generator.ORDER_ATOMIC);
|
||||
var max = generator.valueToCode(this, 'MAX', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
|
||||
var area = generator.valueToCode(this, 'AREA', generator.ORDER_ATOMIC);
|
||||
var code = sub + '.register_color(' + min +', '+ max +', '+ color +', area_threshold='+ area + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const REGISTER_NEW_FACE = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var min = generator.valueToCode(this, 'MIN', generator.ORDER_ATOMIC);
|
||||
var max = generator.valueToCode(this, 'MAX', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
|
||||
var area = generator.valueToCode(this, 'AREA', generator.ORDER_ATOMIC);
|
||||
var code = sub + '.enroll(' + min +', '+ max +', '+ color +', area_threshold='+ area + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const DELETE_FACE_FROM_DATABASE = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC);
|
||||
var code = sub + '.delete_face(' + id + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const PRINT_FACE_DATABASE = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var code = sub + '.print_database()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
@@ -1781,7 +1781,7 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="set_power_output" m-show="micropython:esp32s3:mixgo_sant micropython:esp32s3:mixgo_soar"></block>
|
||||
<block type="get_power_output" m-show="micropython:esp32s3:mixgo_sant micropython:esp32s3:mixgo_soar"></block>
|
||||
<block type="set_all_power_output" m-show="micropython:esp32s3:mixgo_sant micropython:esp32s3:mixgo_soar">
|
||||
<value name="duty">
|
||||
<shadow type="math_number">
|
||||
@@ -1970,23 +1970,13 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="onboard_tft_show_image_xy_direct" m-show="micropython:esp32s3:mixgo_sant">
|
||||
<value name="x">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="y">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="direct">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">12.jpg</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="SCREEN_DISPLAY_IMAGE" m-show="micropython:esp32s3:mixgo_sant">
|
||||
<value name="direct">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">mixly.jpg</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="display_scroll_string">
|
||||
<value name="data">
|
||||
<shadow type="text">
|
||||
@@ -2426,25 +2416,230 @@
|
||||
<block type="SHOOT_AND_SAVE_PICTURE">
|
||||
<value name="direct">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">12.jpg</field>
|
||||
<field name="TEXT">mixly.jpg</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="quality">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">90</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="variables_set">
|
||||
<field name="VAR">frame</field>
|
||||
<value name="VALUE">
|
||||
<block type="GET_PICTURE_DATA_EXACT"></block>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_PICTURE_DATA_WHS"></block>
|
||||
<block type="SCREEN_DISPLAY_IMAGE">
|
||||
<value name="direct">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">mixly.jpg</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_PICTURE_DATA_EXACT"></block>
|
||||
<block type="SCREEN_SHOW_CAM_GRAPH_SHOOT">
|
||||
<value name="boolean">
|
||||
<shadow type="logic_boolean">
|
||||
<value name="direct">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">mixly.jpg</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
|
||||
|
||||
|
||||
|
||||
<block type="AI_CAMERA_INIT">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">ai</field>
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_QR_CODE_RECOGNITION_DATA">
|
||||
<block type="AI_CAMERA_INIT_FACERECOGNIZE">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="PATH">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">face.db</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="MODEL_LOGOUT">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="variables_set">
|
||||
<field name="VAR">_results</field>
|
||||
<value name="VALUE">
|
||||
<block type="MODEL_RUN">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="FRAME">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">frame</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
</value>
|
||||
</block>
|
||||
<block type="MODEL_WHETHER_RUN_SUCCEED">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
|
||||
</block>
|
||||
<block type="GET_HOW_MUCH_RECOGNITION">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_NO_RECOGNITION">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NO">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_NO_CAT_OR_FACE_RECOGNITION">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NO">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_NO_XY_RECOGNITION">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NO">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_NO_XY_RECOGNITION_FACE">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NO">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="GET_NO_FACE_RECOGNITION_INFO">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">_results</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NO">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="Register_color_recognition_fixed">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="AREA">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">256</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="Register_color_recognition">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="MIN">
|
||||
<shadow type="tuple_create_with_text_return">
|
||||
<field name="TEXT">0,0,0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="MAX">
|
||||
<shadow type="tuple_create_with_text_return">
|
||||
<field name="TEXT">255,255,255</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="COLOR">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">color</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="AREA">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">256</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="REGISTER_NEW_FACE">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="NAME">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">name</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="DELETE_FACE_FROM_DATABASE">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="ID">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="PRINT_FACE_DATABASE">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">Model</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
|
||||
<!-- <block type="GET_QR_CODE_RECOGNITION_DATA">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">ai</field>
|
||||
@@ -2576,7 +2771,7 @@
|
||||
<field name="VAR">ai</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
</block> -->
|
||||
</category>
|
||||
<category id="catAIvoicesensor" colour="#2FAD7A">
|
||||
<block type="VOICE_RECOGNITION_CONTROL"></block>
|
||||
|
||||
@@ -4097,7 +4097,7 @@ ZhHans.MIXLY_CAL_TO_ALTITUDE = '计算获取海拔';
|
||||
ZhHans.MIXLY_SHOOTING_SIZE = '拍摄尺寸';
|
||||
ZhHans.MIXLY_SHOOT_AND_SAVE_PICTURE = '拍摄照片并保存';
|
||||
ZhHans.MIXLY_GET_PICTURE_DATA = '获取摄像头图像';
|
||||
ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕实时显示摄像头采集图像';
|
||||
ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕显示摄像头数据';
|
||||
ZhHans.MIXLY_RECOGNITION = '检测';
|
||||
ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '获取二维码检测结果';
|
||||
// ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '无检测结果返回None,有结果左上角出现绿色小方块,并返回二维码信息。'
|
||||
@@ -4221,4 +4221,24 @@ ZhHans.MIXLY_KJWX = '科研大模型';
|
||||
ZhHans.MIXLY_DIALOGUE_BACKGROUND = '对话背景';
|
||||
ZhHans.MIXLY_CUSTOMIZE_MODEL = '可定制化大模型';
|
||||
ZhHans.MIXLY_SUPPORT = '支持';
|
||||
ZhHans.MIXLY_HORIZONTAL_MIRRORING = '水平镜像';
|
||||
ZhHans.MIXLY_VERTICAL_MIRRORING = '垂直镜像';
|
||||
ZhHans.MIXLY_MODEL_NUMBER = '型号';
|
||||
ZhHans.MIXLY_IMAGE_QUALITY = '图像质量';
|
||||
ZhHans.MIXLY_ROTATION_ANGLE = '旋转角度';
|
||||
ZhHans.MIXLY_SYNC_DISPLAY = '同步显示';
|
||||
ZhHans.MIXLY_ONLY = '仅';
|
||||
ZhHans.MIXLY_HUMAN = '人';
|
||||
ZhHans.MIXLY_CAT = '猫';
|
||||
ZhHans.MIXLY_LOGOUT = '注销';
|
||||
ZhHans.REGUSTER_COLOR_RECOGNITION = '注册识别颜色(自定义)';
|
||||
ZhHans.MINIMUN_DETECTABLE_AREA = '最小检测面积(像素)';
|
||||
ZhHans.MIXLY_FACE_RECOGNIZER = '人脸分辨';
|
||||
ZhHans.PATH_OF_FACE_DATABASE = '人脸数据库文件的路径';
|
||||
ZhHans.register_a_new_face_in_the_database = '在数据库中注册新人脸';
|
||||
ZhHans.delete_the_face_from_the_database = '从数据库中删除人脸';
|
||||
ZhHans.print_the_contents_of_the_face_database = '打印人脸数据库的内容';
|
||||
ZhHans.MIXLY_FACE_ID = '面容ID';
|
||||
ZhHans.MILXY_FACE_SIMILARITY = '面容相似度';
|
||||
ZhHans.MIXLY_FACE_NAME = '面容姓名';
|
||||
})();
|
||||
Reference in New Issue
Block a user