video: {
width: {min: 1280},
height: {min: 720},
- //facingMode: {exact: "environment"}
+ facingMode: {exact: "environment"}
}, audio: false
}).then(function (stream) {
video.srcObject = stream;
}
function recognizeAttempt() {
+ cleanOpencvReferences();
var input = document.querySelector('#input');
input.width = video.videoWidth;
input.height = video.videoHeight;
input.getContext('2d').drawImage(video, 0, 0, input.width, input.height);
var start = Date.now();
var contour = detectBoard('input', input.width, input.height, true);
+ cleanOpencvReferences();
if (contour !== false) {
console.log(Date.now() - start);
correctPerspective(contour);
// Load source image
let src = cv.imread(id);
opencvReferences.push(src);
-
// Grayscale, threshold and find all coutours
cv.cvtColor(src, src, cv.COLOR_RGBA2GRAY, 0);
+ opencvReferences.push(src);
console.log('source grayscaled', Date.now(), Date.now() - start);
cv.threshold(src, src, 120, 200, cv.THRESH_BINARY);
+ opencvReferences.push(src);
console.log('source prepared', Date.now(), Date.now() - start);
let contours = new cv.MatVector();
opencvReferences.push(contours);
res.push(vertex);
}
console.log('board vertices found', Date.now(), Date.now() - start);
- cleanOpencvReferences();
console.log('cleaned', Date.now(), Date.now() - start);
return res;
}
function drawContours(canvas, contours, type, width, height) {
try {
-
-
let tmp = new cv.MatVector();
for (let i = 0; i < contours.length; i++) {
tmp.push_back(contours[i][type]);
}
+ opencvReferences.push(tmp);
var dst = cv.Mat.zeros(height, width, cv.CV_8UC3);
+ opencvReferences.push(dst);
for (let i = 0; i < tmp.size(); ++i) {
let color = new cv.Scalar(Math.round(Math.random() * 255), Math.round(Math.random() * 255),
Math.round(Math.random() * 255));
--- /dev/null
+{
+ "name": "1000%",
+ "short_name": "1000%",
+ "description": "",
+ "display": "standalone",
+ "orientation": "any",
+ "background_color": "#0c6638",
+ "theme_color": "#0c6638",
+ "start_url": "https://demo1.cubedesigners.com/1000pct/",
+ "scope": "https://demo1.cubedesigners.com/1000pct/",
+ "icons": [
+ {
+ "sizes": "36x36",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-36.png",
+ "density": 0.75
+ },
+ {
+ "sizes": "48x48",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-48.png",
+ "density": 1
+ },
+ {
+ "sizes": "72x72",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-72.png",
+ "density": 1.5
+ },
+ {
+ "sizes": "96x96",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-96.png",
+ "density": 2
+ },
+ {
+ "sizes": "144x144",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-144.png",
+ "density": 3
+ },
+ {
+ "sizes": "192x192",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-192.png",
+ "density": 4
+ },
+ {
+ "sizes": "256x256",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-256.png",
+ "density": 5.333
+ },
+ {
+ "sizes": "512x512",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-512.png",
+ "density": 10.667
+ },
+ {
+ "sizes": "1024x1024",
+ "type": "image\/png",
+ "src": "https://demo1.cubedesigners.com/1000pct/assets/favicon/android-1024.png",
+ "density": 21.333
+ }
+ ]
+}
\ No newline at end of file