From 615431e54832a5ac1d44be3090440c1edfbbfb4f Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Sat, 20 May 2023 02:14:02 +0200 Subject: [PATCH] can identifier validation button --- ReadMe.md | 2 ++ assets/templates/valid_btn_template.png | Bin 0 -> 13729 bytes package.json | 5 +-- src/openCvTest.js | 40 ++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 ReadMe.md create mode 100644 assets/templates/valid_btn_template.png create mode 100644 src/openCvTest.js diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..d89ee73 --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,2 @@ +##For MacOS +https://github.com/UrielCh/opencv4nodejs \ No newline at end of file diff --git a/assets/templates/valid_btn_template.png b/assets/templates/valid_btn_template.png new file mode 100644 index 0000000000000000000000000000000000000000..83687f1e3c5dea11d40dd3df1a757f7d473b432f GIT binary patch literal 13729 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 7de3632..1450668 100644 --- a/package.json +++ b/package.json @@ -17,15 +17,16 @@ "mongodb": "^4.9.1", "mongoose": "^6.5.4", "node-schedule": "^2.1.0", + "node-tesseract-ocr": "^2.2.1", "node-wget": "^0.4.3", "node-xlsx": "^0.21.0", + "opencv4nodejs": "wandenberg/opencv4nodejs", "playwright": "^1.32.1", "puppeteer": "^15.5.0", - "node-tesseract-ocr": "^2.2.1", - "ws": "^6.2.0", "read-ini-file": "^3.0.1", "uuid": "^9.0.0", "winston": "^3.8.2", + "ws": "^6.2.0", "yarn": "^1.22.19" }, "devDependencies": { diff --git a/src/openCvTest.js b/src/openCvTest.js new file mode 100644 index 0000000..5f8f0be --- /dev/null +++ b/src/openCvTest.js @@ -0,0 +1,40 @@ +const cv = require('opencv4nodejs'); + +// cv.imread('/Users/lpan/Downloads/Screenshot_2023-05-19-14-09-11-82_40deb401b9ffe8e1df2f1cc5ba480b12.jpg', function (err, im) { +// if (err) return console.error('error loading image'); +// +// var output = im.matchTemplate('../assets/templates/valid_btn_template.png', 3); +// +// var matches = output.templateMatches(0.80, 1.0, 5, false); +// +// console.log(matches); +// }); + +const findWaldo = async () => { + // Load images + const originalMat = await cv.imreadAsync(`/Users/lpan/Downloads/Screenshot_2023-05-19-14-09-11-82_40deb401b9ffe8e1df2f1cc5ba480b12.jpg`); + const waldoMat = await cv.imreadAsync(`${__dirname}/../assets/templates/valid_btn_template.png`); + + // Match template (the brightest locations indicate the highest match) + const matched = originalMat.matchTemplate(waldoMat, 3); + + // Use minMaxLoc to locate the highest value (or lower, depending of the type of matching method) + const minMax = matched.minMaxLoc(); + const {maxLoc: {x, y}} = minMax; + console.log("x is " + x); + console.log("y is " + y); + // Draw bounding rectangle + originalMat.drawRectangle( + new cv.Rect(x, y, waldoMat.cols, waldoMat.rows), + new cv.Vec(0, 255, 0), + 2, + cv.LINE_8 + ); + + // Open result in new window + cv.imshow('We\'ve found Waldo!', originalMat); + cv.waitKey(); +}; + +// noinspection JSIgnoredPromiseFromCall +findWaldo(); \ No newline at end of file