sant图像智能更新

This commit is contained in:
Irene-Maxine
2025-10-27 20:26:05 +08:00
parent 7def9bf3a4
commit f721158daf
5 changed files with 359 additions and 134 deletions

View File

@@ -1,6 +1,10 @@
{
"ESP32 Dev Module": {
"Handbit": {
"RGB LED.mix": {
"__file__": true,
"__name__": "RGB LED.mix"
},
"buzzer play two tigers.mix": {
"__file__": true,
"__name__": "buzzer play two tigers.mix"
@@ -13,13 +17,13 @@
"__file__": true,
"__name__": "display Text.mix"
},
"RGB LED.mix": {
"__file__": true,
"__name__": "RGB LED.mix"
},
"__file__": false,
"__name__": "Handbit"
},
"MPU6050打印数值.mix": {
"__file__": true,
"__name__": "MPU6050打印数值.mix"
},
"MixGo": {
"MPU9250.mix": {
"__file__": true,
@@ -28,10 +32,6 @@
"__file__": false,
"__name__": "MixGo"
},
"MPU6050打印数值.mix": {
"__file__": true,
"__name__": "MPU6050打印数值.mix"
},
"PWM模拟输出.mix": {
"__file__": true,
"__name__": "PWM模拟输出.mix"

View File

@@ -4,6 +4,18 @@ const AI_LOCAL_GRAPH_HUE = '#90A244';
const IOT_HUE = '#526FC3';
const DISPLAY_ONBOARD_HUE = '#569A98';
export const yesorno = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"],
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "1"]
]), "state");
this.setOutput(true);
}
};
//voice part
export const VOICE_RECOGNITION_CONTROL = {
init: function () {
@@ -269,7 +281,7 @@ export const CREATE_CAMERA = {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SMARTCAMERA)
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SHOOTING_SIZE)
.appendField(Blockly.Msg.MIXLY_SHOOTING_SIZE)
.appendField(new Blockly.FieldDropdown([
['240px*240px', "R240X240"],
['320px*320px', "R320X320"],
@@ -280,18 +292,10 @@ export const CREATE_CAMERA = {
['QVGA : 320px*240px', "QVGA"],
['QQVGA : 160px*120px', "QQVGA"]
]), "cmd");
this.appendDummyInput("")
this.appendValueInput("HM")
.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.appendValueInput("VF")
.appendField(Blockly.Msg.MIXLY_VERTICAL_MIRRORING);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -320,15 +324,83 @@ export const SHOOT_AND_SAVE_PICTURE = {
}
};
export const GET_IMAGE_AND_SAVE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
this.appendValueInput('direct')
.appendField(Blockly.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + Blockly.Msg.blockpy_turtle_set_num + 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);
}
};
export const OPEN_IMAGE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('direct')
.appendField(Blockly.Msg.MIXLY_MICROBIT_Turn_on_display + Blockly.Msg.MIXLY_MICROBIT_IMAGE + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH + Blockly.Msg.blockpy_turtle_set_num);
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
.appendField(new Blockly.FieldDropdown([
['0','0'],
['90','90'],
['180','180'],
['270','270']
]),'angle');
this.setOutput(true);
this.setInputsInline(true);
}
};
export const CAMERA_LOOGOUT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_LOGOUT + Blockly.Msg.MIXLY_SMARTCAMERA)
this.setPreviousStatement(true,null);
this.setNextStatement(true,null)
this.setInputsInline(true);
}
};
export const GET_PICTURE_DATA_EXACT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA)
// .appendField(new Blockly.FieldDropdown([
// ["RGB565" + Blockly.Msg.MIXLY_SD_DATA,"0"],
// ["JPG" + Blockly.Msg.MIXLY_SD_DATA,"1"],
// [Blockly.Msg.MIXLY_JPG_base64_CODE + Blockly.Msg.MIXLY_SD_DATA ,"2"]
// ]),"kind")
this.setOutput(true);
this.setInputsInline(true);
}
};
export const CONVERT_IMAGE_TO_JPG = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
this.appendDummyInput()
.appendField(Blockly.Msg.A_TO_B)
.appendField(new Blockly.FieldDropdown([
["RGB565" + Blockly.Msg.MIXLY_SD_DATA,"0"],
["JPG" + Blockly.Msg.MIXLY_SD_DATA,"1"],
[Blockly.Msg.MIXLY_JPG_base64_CODE + Blockly.Msg.MIXLY_SD_DATA ,"2"]
["JPG" + Blockly.Msg.MIXLY_SD_DATA,"0"],
[Blockly.Msg.MIXLY_JPG_base64_CODE + Blockly.Msg.MIXLY_SD_DATA ,"1"]
]),"kind")
this.setOutput(true);
this.setInputsInline(true);
@@ -338,12 +410,14 @@ export const GET_PICTURE_DATA_EXACT = {
export const GET_PICTURE_DATA_WHS = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_GET);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA)
.appendField(Blockly.Msg.MIXLY_DE)
.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"]
[Blockly.Msg.MIXLY_WIDTH,"width"],
[Blockly.Msg.MIXLY_HEIGHT,"height"],
[Blockly.Msg.MIXLY_MICROBIT_JS_I2C_FORMAT,"format"]
]),"kind")
this.setOutput(true);
this.setInputsInline(true);
@@ -352,14 +426,9 @@ export const GET_PICTURE_DATA_WHS = {
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.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_MICROBIT_monitor + Blockly.Msg.OLEDDISPLAY + Blockly.Msg.MIXLY_MICROBIT_IMAGE)
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_SYNC_DISPLAY)
.appendField(new Blockly.FieldDropdown([
@@ -398,6 +467,16 @@ export const SCREEN_DISPLAY_IMAGE = {
}
};
export const GET_SCREEN_IMAGE = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_MICROBIT_monitor + Blockly.Msg.MIXLY_MICROBIT_IMAGE)
this.setOutput(true);
this.setInputsInline(true);
}
};
export const AI_CAMERA_INIT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
@@ -413,6 +492,29 @@ export const AI_CAMERA_INIT = {
[Blockly.Msg.MIXLY_HUMAN + Blockly.Msg.MIXLY_RECOGNITION, "HumanDetector"],
[Blockly.Msg.MIXLY_AipFace, "FaceDetector"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_WIDTH)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
["128px","128"],
["96px","96"],
["640px","640"],
["480px","480"],
["160px","160"]
]),"width");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_HEIGHT)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
["128px","128"],
["96px","96"],
["480px","480"],
["320px","320"],
["240px","240"],
["120px","120"]
]),"height");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -425,6 +527,29 @@ export const AI_CAMERA_INIT_FACERECOGNIZE = {
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_WIDTH)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
["128px","128"],
["96px","96"],
["640px","640"],
["480px","480"],
["160px","160"]
]),"width");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_HEIGHT)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
["128px","128"],
["96px","96"],
["480px","480"],
["320px","320"],
["240px","240"],
["120px","120"]
]),"height");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
.appendField(Blockly.Msg.MIXLY_FACE_RECOGNIZER);
@@ -623,7 +748,7 @@ export const Register_color_recognition_fixed = {
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.HTML_COLOUR)
.appendField(Blockly.Msg.MIXLY_REGISTER + 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"],
@@ -649,7 +774,7 @@ export const Register_color_recognition = {
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.REGUSTER_COLOR_RECOGNITION)
.appendField(Blockly.Msg.REGISTER_COLOR_RECOGNITION)
this.appendValueInput("MIN")
.appendField('H、S、V' + Blockly.Msg.blockpy_TUPLE_MIN);
this.appendValueInput("MAX")

View File

@@ -1,5 +1,11 @@
import { Boards } from 'mixly';
export const yesorno = function (_, generator) {
var code = this.getFieldValue('state');
return [code, generator.ORDER_ATOMIC];
}
//voice part
export const VOICE_RECOGNITION_CONTROL = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
@@ -124,11 +130,11 @@ 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_FrameSize_PixelFormat'] = 'from camera import Camera,FrameSize,PixelFormat';
generator.definitions_['import_Camera_FrameSize'] = 'from camera import Camera,FrameSize';
var cmd = this.getFieldValue('cmd');
var hm = this.getFieldValue('hm');
var vf = this.getFieldValue('vf');
var code = 'cam = Camera(FrameSize.' + cmd + ',hmirror='+ hm + ',vflip='+ vf +')\n';
var hm = generator.valueToCode(this, 'HM', generator.ORDER_ATOMIC);
var vf = generator.valueToCode(this, 'VF', generator.ORDER_ATOMIC);
var code = 'camera = Camera(FrameSize.' + cmd + ',hmirror='+ hm + ',vflip='+ vf +')\n';
return code;
}
@@ -136,30 +142,67 @@ export const SHOOT_AND_SAVE_PICTURE = function (_, generator) {
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var q = generator.valueToCode(this, 'quality', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle');
var code = 'cam.snapshot(' + direct + ',quality='+ q + ',rotation=' + a + ')\n';
var code = 'camera.snapshot(' + direct + ',quality='+ q + ',rotation=' + a + ')\n';
return code;
}
export const GET_IMAGE_AND_SAVE = function (_, generator) {
generator.definitions_['camera_import_Image'] = 'from camera import Image';
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var q = generator.valueToCode(this, 'quality', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle');
var code = 'Image.save('+ sub + ',path=' + direct + ',quality='+ q + ',rotation=' + a + ')\n';
return code;
}
export const OPEN_IMAGE = function (_, generator) {
generator.definitions_['camera_import_Image'] = 'from camera import Image';
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle');
var code = 'Image.open(path=' + direct +',rotation=' + a + ')';
return [code, generator.ORDER_ATOMIC];
}
export const CAMERA_LOOGOUT = function (_, generator) {
var code = 'camera.deinit()\n';
return code;
}
export const GET_PICTURE_DATA_EXACT = function (_, generator) {
generator.definitions_['import_base64'] = 'import base64';
// var kind = this.getFieldValue('kind');
var code = 'camera.capture()';
return [code, generator.ORDER_ATOMIC];
}
export const CONVERT_IMAGE_TO_JPG = function (_, generator) {
generator.definitions_['camera_import_Image'] = 'from camera import Image';
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var kind = this.getFieldValue('kind');
var code = 'cam.snapshot(formats=' + kind +')';
var code = 'Image.convert(' + sub + ', formats=' + kind + ')';
return [code, generator.ORDER_ATOMIC];
}
export const GET_PICTURE_DATA_WHS = function (_, generator) {
generator.definitions_['camera_import_Image'] = 'from camera import Image';
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var kind = this.getFieldValue('kind');
var code = 'cam.' + kind +'()';
var code = sub + '.' + kind ;
return [code, generator.ORDER_ATOMIC];
}
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var s = this.getFieldValue('sync');
var code = 'onboard_tft.display(data, sync='+ s +')\n';
var code = 'onboard_tft.display(' + sub +', sync='+ s +')\n';
return code;
}
export const SCREEN_DISPLAY_IMAGE = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle');
var s = this.getFieldValue('sync');
@@ -167,11 +210,20 @@ export const SCREEN_DISPLAY_IMAGE = function (_, generator) {
return code;
}
export const GET_SCREEN_IMAGE = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var code = 'onboard_tft.screenshot()';
return [code, generator.ORDER_ATOMIC];
}
export const AI_CAMERA_INIT = function (_, generator) {
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 +' = esp_dl.'+cmd + '(width=cam.get_pixel_width(), height=cam.get_pixel_height())\n';
var width = this.getFieldValue('width');
var height = this.getFieldValue('height');
var code = sub +' = esp_dl.'+cmd + '(width='+width+', height='+height+')\n';
return code;
}
@@ -179,7 +231,9 @@ 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';
var width = this.getFieldValue('width');
var height = this.getFieldValue('height');
var code = sub +' = esp_dl.FaceRecognizer(width='+width+', height='+height+', db_path='+ path +')\n';
return code;
}

View File

@@ -2412,7 +2412,36 @@
</category>
<category id="catAIonboard" colour="#2FAD7A" m-show='micropython:esp32s3:mixgo_sant'>
<category id="catAIgraphsensor" colour="#90A244">
<block type="CREATE_CAMERA"></block>
<block type="CREATE_CAMERA">
<value name="HM">
<shadow type="yesorno">
</shadow>
</value>
<value name="VF">
<shadow type="yesorno">
</shadow>
</value>
</block>
<block type="variables_set">
<field name="VAR">image</field>
<value name="VALUE">
<block type="GET_PICTURE_DATA_EXACT"></block>
</value>
</block>
<block type="CONVERT_IMAGE_TO_JPG">
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">image</field>
</shadow>
</value>
</block>
<block type="GET_PICTURE_DATA_WHS">
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">image</field>
</shadow>
</value>
</block>
<block type="SHOOT_AND_SAVE_PICTURE">
<value name="direct">
<shadow type="text">
@@ -2425,13 +2454,31 @@
</shadow>
</value>
</block>
<block type="variables_set">
<field name="VAR">frame</field>
<value name="VALUE">
<block type="GET_PICTURE_DATA_EXACT"></block>
<block type="GET_IMAGE_AND_SAVE">
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">image</field>
</shadow>
</value>
<value name="direct">
<shadow type="text">
<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="GET_PICTURE_DATA_WHS"></block>
<block type="OPEN_IMAGE">
<value name="direct">
<shadow type="text">
<field name="TEXT">mixly.jpg</field>
</shadow>
</value>
</block>
<block type="CAMERA_LOOGOUT"></block>
<block type="SCREEN_DISPLAY_IMAGE">
<value name="direct">
<shadow type="text">
@@ -2439,17 +2486,14 @@
</shadow>
</value>
</block>
<block type="GET_SCREEN_IMAGE"></block>
<block type="SCREEN_SHOW_CAM_GRAPH_SHOOT">
<value name="direct">
<shadow type="text">
<field name="TEXT">mixly.jpg</field>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">image</field>
</shadow>
</value>
</block>
<block type="AI_CAMERA_INIT">
<value name="SUB">
<shadow type="variables_get">
@@ -2476,6 +2520,76 @@
</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="variables_set">
<field name="VAR">_results</field>
<value name="VALUE">
@@ -2487,7 +2601,7 @@
</value>
<value name="FRAME">
<shadow type="variables_get">
<field name="VAR">frame</field>
<field name="VAR">image</field>
</shadow>
</value>
</block>
@@ -2568,76 +2682,7 @@
</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">

View File

@@ -4094,7 +4094,7 @@ ZhHans.MIXLY_SET_DEGREE = '将角度';
ZhHans.MIXLY_TRANS_TO_RADIAN = '转换为弧度';
ZhHans.MIXLY_REF_TO_PRESSURE = '参考气压';
ZhHans.MIXLY_CAL_TO_ALTITUDE = '计算获取海拔';
ZhHans.MIXLY_SHOOTING_SIZE = '拍摄尺寸';
ZhHans.MIXLY_SHOOTING_SIZE = '图像尺寸';
ZhHans.MIXLY_SHOOT_AND_SAVE_PICTURE = '拍摄照片并保存';
ZhHans.MIXLY_GET_PICTURE_DATA = '获取摄像头图像';
ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕显示摄像头数据';
@@ -4231,7 +4231,8 @@ ZhHans.MIXLY_ONLY = '仅';
ZhHans.MIXLY_HUMAN = '人';
ZhHans.MIXLY_CAT = '猫';
ZhHans.MIXLY_LOGOUT = '注销';
ZhHans.REGUSTER_COLOR_RECOGNITION = '注册识别颜色(自定义)';
ZhHans.MIXLY_REGISTER = '注册';
ZhHans.REGISTER_COLOR_RECOGNITION = '注册识别颜色(自定义)';
ZhHans.MINIMUN_DETECTABLE_AREA = '最小检测面积(像素)';
ZhHans.MIXLY_FACE_RECOGNIZER = '人脸分辨';
ZhHans.PATH_OF_FACE_DATABASE = '人脸数据库文件的路径';