performDetection method
void
performDetection()
Implementation
void performDetection() async {
if (abort) return;
/**************************/
/* Cancel Detection Timer */
/**************************/
if (detectionTimer != null) detectionTimer!.cancel();
/****************************/
/* No New Frames to Detect? */
/****************************/
if (lastFrame != detectedFrame) {
detectedFrame = lastFrame;
try {
if (widget.model.detectors != null) {
int left = 0;
int top = 0;
int width = canvas.width!;
int height = canvas.height!;
if ((width + left) > canvas.width!) width = canvas.width! - left;
if ((height + top) > canvas.height!) height = canvas.height! - top;
/*************************/
/* Get Image RGBA Bitmap */
/*************************/
HTML.ImageData image =
canvas.context2D.getImageData(left, top, width, height);
List<int> rgba = image.data.toList();
/************************/
/* Convert to Grayscale */
/************************/
//rgba = ImageHelper.toGrayScale(rgba);
//var list8 = Uint8List.fromList(rgba);
//UriData uri = UriData.parse(canvas.toDataUrl('image/png',1.0));
//Uint8List bytz = uri.contentAsBytes();
//IMAGE.Image original = IMAGE.decodePng(bytz);
//img = IMAGE.grayscale(img);
//img = IMAGE.gaussianBlur(img, 2);
//img = IMAGE.contrast(img, 125);
//img = IMAGE.invert(img);
if (widget.model.debug == true) {
var bytes = Uint8List.fromList(rgba);
for (int i = 0; i < bytes.length; i++) image.data[i] = bytes[i];
canvas2.width = width;
canvas2.height = height;
canvas2.context2D.putImageData(image, 0, 0);
HTML.Blob blob = await canvas2.toBlob('image/png', 1.0);
await Platform.fileSaveAsFromBlob(blob, "${S.newId()}-.png");
}
// process stream image
onStream(rgba, width, height);
}
} catch(e) {
//DialogService().show(type: DialogType.error, title: 'detecting error2');
}
}
/***************************/
/* Schedule Next Detection */
/***************************/
detectionTimer = Timer(Duration(milliseconds: 50), performDetection);
}