板载智能修改

This commit is contained in:
Irene-Maxine
2025-11-01 09:32:17 +08:00
parent 95c4068009
commit 9e27c59346
4 changed files with 297 additions and 48 deletions

View File

@@ -390,7 +390,9 @@ export const CONVERT_IMAGE_TO_JPG = {
.appendField(new Blockly.FieldDropdown([
["JPG" + Blockly.Msg.MIXLY_SD_DATA,"0"],
[Blockly.Msg.MIXLY_JPG_base64_CODE + Blockly.Msg.MIXLY_SD_DATA ,"1"]
]),"kind")
]),"kind");
this.appendValueInput('quality')
.appendField(Blockly.Msg.MIXLY_IMAGE_QUALITY);
this.setOutput(true);
this.setInputsInline(true);
}
@@ -426,6 +428,23 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
}
};
export const SCREEN_SHOW_CAM_GRAPH_SHOOT_LOCATION = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.OLEDDISPLAY + Blockly.Msg.MIXLY_MICROBIT_IMAGE)
this.appendValueInput("x")
.appendField(Blockly.Msg.TURTLE_POS + "x");
this.appendValueInput("y")
.appendField("y")
this.appendValueInput('boolean')
.appendField( Blockly.Msg.MIXLY_synchronize);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const SCREEN_DISPLAY_IMAGE = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
@@ -448,6 +467,52 @@ export const SCREEN_DISPLAY_IMAGE = {
}
};
export const SCREEN_DISPLAY_IMAGE_LOCATION = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput('direct')
.appendField(Blockly.Msg.OLED_BITMAP)
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
this.appendValueInput("x")
.appendField(Blockly.Msg.TURTLE_POS + "x");
this.appendValueInput("y")
.appendField("y")
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
.appendField(new Blockly.FieldDropdown([
['0','0'],
['90','90'],
['180','180'],
['270','270']
]),'angle');
this.appendValueInput('boolean')
.appendField( Blockly.Msg.MIXLY_synchronize);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const GET_SCREEN_IMAGE_SIZE = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SCREENSHOT + Blockly.Msg.MIXLY_MICROBIT_monitor)
this.appendValueInput("x")
.appendField("x")
this.appendValueInput("y")
.appendField("y")
this.appendValueInput("w")
.appendField("w")
this.appendValueInput("h")
.appendField("h")
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_MICROBIT_IMAGE)
this.setOutput(true);
this.setInputsInline(true);
}
};
export const GET_SCREEN_IMAGE = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
@@ -471,10 +536,23 @@ export const AI_CAMERA_INIT = {
[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_FACE_CLASSIFIER, "FaceDetector"]
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FaceDetector"],
[Blockly.Msg.MIXLY_PICTURE_CLASSIFY,"ImageNet"]
]), "kind");
this.appendValueInput("WIDTH")
.appendField(Blockly.Msg.MIXLY_WIDTH);
this.appendValueInput("HEIGHT")
.appendField(Blockly.Msg.MIXLY_HEIGHT);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const MODEL_INIT_WIDTH = {
init: function(){
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_WIDTH)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
@@ -484,8 +562,15 @@ export const AI_CAMERA_INIT = {
["480px","480"],
["160px","160"]
]),"width");
this.setOutput(true);
this.setInputsInline(true);
}
};
export const MODEL_INIT_HEIGHT = {
init: function(){
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_HEIGHT)
.appendField(new Blockly.FieldDropdown([
["240px","240"],
["320px","320"],
@@ -497,8 +582,7 @@ export const AI_CAMERA_INIT = {
["120px","120"]
]),"height");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setOutput(true);
}
};
@@ -511,29 +595,10 @@ export const AI_CAMERA_INIT_FACERECOGNIZE = {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
.appendField(Blockly.Msg.MIXLY_AipFace);
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.appendValueInput("WIDTH")
.appendField(Blockly.Msg.MIXLY_WIDTH);
this.appendValueInput("HEIGHT")
.appendField(Blockly.Msg.MIXLY_HEIGHT);
this.appendValueInput("PATH")
.appendField(Blockly.Msg.PATH_OF_FACE_DATABASE);
this.setInputsInline(true);
@@ -616,7 +681,8 @@ export const GET_NO_RECOGNITION = {
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
[Blockly.Msg.MIXLY_FACE, "FaceDetector"],
[Blockly.Msg.MIXLY_PICTURE_CLASSIFY,"ImageNet"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.OLED_STRING);
@@ -639,7 +705,8 @@ export const GET_NO_CAT_OR_FACE_RECOGNITION = {
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
[Blockly.Msg.MIXLY_FACE, "FaceDetector"],
[Blockly.Msg.MIXLY_PICTURE_CLASSIFY,"ImageNet"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_CONFIDENCE_DEGREE);
@@ -851,6 +918,20 @@ export const GET_QR_CODE_RECOGNITION_DATA = {
}
};
export const GET_PICTURE_RECOGNITION_DATA = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.setCheck("var");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET_PICTURE_CLASSIFY_RESULT);
this.appendValueInput('boolean')
.appendField( Blockly.Msg.MIXLY_synchronize);
this.setOutput(true);
this.setInputsInline(true);
}
};
export const GET_COLOR_DETECTION_NUM = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
@@ -1174,7 +1255,8 @@ export const AI_CAMERA_INIT_SIMPLE = {
[Blockly.Msg.MIXLY_CAT + Blockly.Msg.MIXLY_RECOGNITION, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN + Blockly.Msg.MIXLY_RECOGNITION, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FaceDetector"],
[Blockly.Msg.MIXLY_AipFace,"FaceRecognizer"]
[Blockly.Msg.MIXLY_AipFace,"FaceRecognizer"],
[Blockly.Msg.MIXLY_PICTURE_CLASSIFY,"ImageNet"]
]), "kind");
this.setInputsInline(true);
this.setPreviousStatement(true, null);

View File

@@ -177,7 +177,8 @@ 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 = 'Image.convert(' + sub + ', formats=' + kind + ')';
var q = generator.valueToCode(this, 'quality', generator.ORDER_ATOMIC);
var code = 'Image.convert(' + sub + ', formats=' + kind + ', quality='+ q +')';
return [code, generator.ORDER_ATOMIC];
}
@@ -198,6 +199,17 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
return code;
}
export const SCREEN_SHOW_CAM_GRAPH_SHOOT_LOCATION = 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 x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'onboard_tft.display(' + sub +',x='+x+',x='+y+', sync='+ bool +')\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";
@@ -208,6 +220,18 @@ export const SCREEN_DISPLAY_IMAGE = function (_, generator) {
return code;
}
export const SCREEN_DISPLAY_IMAGE_LOCATION = 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 x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle');
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'onboard_tft.display(' + direct +',x='+x+',x='+y + ',rotation=' + a + ',sync='+ bool + ')\n';
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";
@@ -215,22 +239,45 @@ export const GET_SCREEN_IMAGE = function (_, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const GET_SCREEN_IMAGE_SIZE = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var w = generator.valueToCode(this, 'w', generator.ORDER_ATOMIC);
var h = generator.valueToCode(this, 'h', generator.ORDER_ATOMIC);
var code = 'screenshot(x='+x+',y='+y+',w='+w+',h='+h+')';
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 width = this.getFieldValue('width');
var height = this.getFieldValue('height');
var width = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);
var height = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);
var code = sub +' = esp_dl.'+cmd + '(width='+width+', height='+height+')\n';
return code;
}
export const MODEL_INIT_WIDTH = function (_, generator) {
var width = this.getFieldValue('width');
var code = width;
return [code, generator.ORDER_ATOMIC];
}
export const MODEL_INIT_HEIGHT = function (_, generator) {
var height = this.getFieldValue('height');
var code = height;
return [code, generator.ORDER_ATOMIC];
}
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 width = this.getFieldValue('width');
var height = this.getFieldValue('height');
var width = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);
var height = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);
var code = sub +' = esp_dl.FaceRecognizer(width='+width+', height='+height+', db_path='+ path +')\n';
return code;
}
@@ -374,6 +421,14 @@ export const GET_QR_CODE_RECOGNITION_DATA = function (_, generator) {
return [code, generator.ORDER_ATOMIC];
}
export const GET_PICTURE_RECOGNITION_DATA = function (_, generator) {
generator.definitions_['import_esp_dl'] = 'import esp_dl'
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'esp_dl.simple_run('+ sub + ', camera, "data", color=0xF800, sync='+bool+')';
return [code, generator.ORDER_ATOMIC];
}
export const GET_COLOR_DETECTION_NUM = function (_, generator) {
generator.definitions_['import_esp_dl'] = 'import esp_dl'
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
@@ -425,7 +480,7 @@ export const GET_FACE_DETECTION_NAME = function (_, generator) {
generator.definitions_['import_esp_dl'] = 'import esp_dl'
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'esp_dl.simple_run('+ sub + ', "person", color=0xF800, sync='+bool+')["name"]\n';
var code = 'esp_dl.simple_run('+ sub + ', camera, "person", "name", color=0xF800, sync='+bool+')';
return [code, generator.ORDER_ATOMIC];
}