Files
2024-07-19 10:16:00 +08:00

245 lines
7.7 KiB
JavaScript

'use strict';
pbc.moduleFunctionD.get('cv2')['imread'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 1) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
return block("cv_read_image", func.lineno, {}, {
'FILE': arg1block
}, {
"inline": "true"
});
}
pbc.moduleFunctionD.get('cv2')['CascadeClassifier'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 1) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
return block("cv_face_classifier", func.lineno, {}, {
'FILE': arg1block
}, {
"inline": "true"
});
}
pbc.moduleFunctionD.get('cv2')['imshow'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 2) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
var arg2block = py2block.convert(args[1]);
return [block("cv_show_image", func.lineno, {}, {
'data': arg1block,
'FILE':arg2block
}, {
"inline": "true"
})];
}
pbc.moduleFunctionD.get('cv2')['imwrite'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 2) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
var arg2block = py2block.convert(args[1]);
return [block("cv_write_image", func.lineno, {}, {
'data': arg1block,
'FILE':arg2block
}, {
"inline": "true"
})];
}
pbc.moduleFunctionD.get('cv2')['waitKey'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 1) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
return [block("cv_waitkey", func.lineno, {}, {
'data': arg1block
}, {
"inline": "true"
})];
}
pbc.moduleFunctionD.get('cv2')['destroyAllWindows'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 0) {
throw new Error("Incorrect number of arguments");
}
return [block("cv_destroy_all", func.lineno, {}, {}, {
"inline": "true"
})];
}
function cvRectLine(mode){
function converter(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 5) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
var x1 = args[1].elts[0]
var y1 = args[1].elts[1]
var x2 = args[2].elts[0]
var y2 = args[2].elts[1]
var colorv='#'
if(args[3].elts[2].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[3].elts[2].n.v.toString(16)
if(args[3].elts[1].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[3].elts[1].n.v.toString(16)
if(args[3].elts[0].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[3].elts[0].n.v.toString(16)
var color = {
_astname: "Str",
s: {
'v': colorv
}
}
var x1block = py2block.convert(x1);
var x2block = py2block.convert(x2);
var y1block = py2block.convert(y1);
var y2block = py2block.convert(y2);
var colorblock = py2block.Str_value(color);
var arg5block = py2block.convert(args[4]);
return [block("cv_line_rect", func.lineno, {
'DIR':mode,
'FIELDNAME':colorblock
}, {
'FILE': arg1block,
'x1':x1block,
'y1':y1block,
'x2':x2block,
'y2':y2block,
'thick':arg5block,
}, {
"inline": "true"
})];
}
return converter;
}
pbc.moduleFunctionD.get('cv2')['rectangle'] = cvRectLine('rectangle')
pbc.moduleFunctionD.get('cv2')['line'] = cvRectLine('line')
pbc.moduleFunctionD.get('cv2')['putText'] = function(py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length != 7) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
var arg2block = py2block.convert(args[1]);
var x1 = args[2].elts[0]
var y1 = args[2].elts[1]
var colorv='#'
if(args[5].elts[2].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[5].elts[2].n.v.toString(16)
if(args[5].elts[1].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[5].elts[1].n.v.toString(16)
if(args[5].elts[0].n.v.toString(16).length==1){
colorv+='0'
}
colorv+=args[5].elts[0].n.v.toString(16)
var color = {
_astname: "Str",
s: {
'v': colorv
}
}
var x1block = py2block.convert(x1);
var y1block = py2block.convert(y1);
var colorblock = py2block.Str_value(color);
var arg5block = py2block.convert(args[4]);
var arg7block = py2block.convert(args[6]);
var font = args[3].attr.v.slice(13)
return [block("cv_text", func.lineno, {
'font':font,
'FIELDNAME':colorblock
}, {
'FILE': arg1block,
'data':arg2block,
'x1':x1block,
'y1':y1block,
'size':arg5block,
'thick':arg7block,
}, {
"inline": "true"
})];
}
pbc.objectFunctionD.get('detectMultiScale')['face'] = function (py2block, func, args, keywords, starargs, kwargs, node) {
if (args.length !== 1 || keywords.length < 2) {
throw new Error("Incorrect number of arguments");
}
var arg1block = py2block.convert(args[0]);
var faceblock = py2block.convert(func.value);
if(keywords.length == 2){
var keylist = new Array(2)
for(var i=0;i<keywords.length;i++){
var tag = py2block.identifier(keywords[i].arg)
if (tag=='scaleFactor'){
keylist[0]=py2block.convert(keywords[i].value);
}
else if(tag=='minNeighbors'){
keylist[1]=py2block.convert(keywords[i].value);
}
}
return block("cv_face_detect", func.lineno, {},{
'FILE': arg1block,
"FACE":faceblock,
'SCALE':keylist[0],
'NEIGHBOR':keylist[1]
},{
"inline": "true"
});}
if(keywords.length == 4){
var keylist = new Array(6)
for(var i=0;i<keywords.length;i++){
var tag = py2block.identifier(keywords[i].arg)
if (tag=='scaleFactor'){
keylist[0]=py2block.convert(keywords[i].value);
}
else if(tag=='minNeighbors'){
keylist[1]=py2block.convert(keywords[i].value);
}
else if(tag=='minSize'){
keylist[2]=py2block.convert(keywords[i].value.elts[0]);
keylist[3]=py2block.convert(keywords[i].value.elts[1]);
}
else if(tag=='maxSize'){
keylist[4]=py2block.convert(keywords[i].value.elts[0]);
keylist[5]=py2block.convert(keywords[i].value.elts[1]);
}
}
return block("cv_face_detect_all", func.lineno, {},{
'FILE': arg1block,
"FACE":faceblock,
'SCALE':keylist[0],
'NEIGHBOR':keylist[1],
'x1':keylist[2],
'y1':keylist[3],
'x2':keylist[4],
'y2':keylist[5]
},{
"inline": "true"
});}
};