From 1d126caba55ecaa4a4892249de33556507a4b3a3 Mon Sep 17 00:00:00 2001 From: jspdown Date: Sun, 22 Nov 2015 15:16:25 +0100 Subject: [PATCH] Add remove-lines.js example This example use GetStructuringElement, Dilate and Erode to remove line of a music partition. --- examples/files/note.png | Bin 0 -> 14650 bytes examples/remove-lines.js | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 examples/files/note.png create mode 100644 examples/remove-lines.js diff --git a/examples/files/note.png b/examples/files/note.png new file mode 100644 index 0000000000000000000000000000000000000000..1535bbbb219e5057df7b144b4ee971deaa20eef2 GIT binary patch literal 14650 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 QobKxVyUMbKDC6h<3yX(yBme*a literal 0 HcmV?d00001 diff --git a/examples/remove-lines.js b/examples/remove-lines.js new file mode 100644 index 0000000..bf231f8 --- /dev/null +++ b/examples/remove-lines.js @@ -0,0 +1,27 @@ +var cv = require('../lib/opencv'); + +// Load the image +cv.readImage('./files/note.png', function(err, im) { + console.log('plop'); + if (err) { throw err; } + if (im.width() < 1 || im.height() < 1) { throw new Error('Image has no size'); } + + im.cvtColor('CV_BGR2GRAY'); + var bw = im.adaptiveThreshold(255, 0, 0, 15, 2); + bw.bitwiseNot(bw); + + var vertical = bw.clone(); + + var verticalsize = vertical.size()[0] / 30; + var verticalStructure = cv.imgproc.getStructuringElement(1, [1, verticalsize]); + + // Apply morphology operations + vertical.erode(1, verticalStructure); + vertical.dilate(1, verticalStructure); + + vertical.bitwiseNot(vertical); + vertical.gaussianBlur([3, 3]); + + // Save output image + vertical.save('./tmp/note.png'); +});