{
const data = cv.imread(im);
const canvas = DOM.canvas(im.width, im.height);
cv.cvtColor(data, data, cv.COLOR_RGBA2GRAY);
let anchor = new cv.Point(-1, -1);
let M = cv.Mat.ones(2, 2, cv.CV_8U);
cv.erode(data, data, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
const contours = new cv.MatVector();
const hierarchy = new cv.Mat();
cv.findContours(data, contours, hierarchy, cv.RETR_CCOMP, cv.CHAIN_APPROX_NONE)
cv.cvtColor(data, data, cv.COLOR_GRAY2RGB);
for(let i = 0; i < contours.size(); i++) {
let color = new cv.Scalar(Math.round(Math.random() * 255), Math.round(Math.random() * 255),
Math.round(Math.random() * 255));
cv.drawContours(data, contours, i, color, 1, cv.LINE_8, hierarchy, 100);
}
cv.imshow(canvas, data);
data.delete();
contours.delete();
hierarchy.delete();
return sideBySide(im, canvas);
}