2017-10-09 2 views
0

J'essaie d'ajouter une identification à une couleur verte. Toutes les couleurs par défaut fonctionnent bien, mais je n'ai pas été en mesure d'ajouter une nouvelle couleur pour la couleur avec l'appareil photo.Impossible d'enregistrer une nouvelle couleur javascript tracking.js

pour plus d'informations: ColorTracker

window.onload = function() { 
    var video = document.getElementById('video'); 
    var canvas = document.getElementById('canvas'); 
    var context = canvas.getContext('2d'); 

    var tracker = new tracking.ColorTracker(); 

    tracking.ColorTracker.registerColor('green', function (r, g, b) { 
     if (r < 50 && g > 200 && b < 50) { 
      return true; 
     } 
     return false; 
    }); 

    tracking.track('#video', tracker, { camera: true }); 

    tracker.on('track', function(event) { 
    context.clearRect(0, 0, canvas.width, canvas.height); 

    event.data.forEach(function(rect) { 
     if (rect.color === 'custom') { 
     rect.color = tracker.customColor; 
     } 

     context.strokeStyle = rect.color; 
     context.strokeRect(rect.x, rect.y, rect.width, rect.height); 
     context.font = '11px Helvetica'; 
     context.fillStyle = "#fff"; 
     context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11); 
     context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22); 
    }); 
    }); 

initGUIControllers(tracker); 
}; 

Répondre

0

Vous le faites à droite, juste le suivi des couleurs est très pointilleux. Il choisira ce qui est le plus proche du G dans la couleur RVB. Il ramasse des couleurs noires et autres à cause de ça. Je recommande d'obtenir la couleur RVB du vert exact que vous voulez suivre et d'en sortir. J'ai inclus les quelques-uns que j'ai travaillé dans mon projet (ceci ne signifie pas que cela fonctionnera pour votre vert)

tracking.ColorTracker.registerColor('darkgreen', function (r, g, b) { 
    if (r < 120 && r > 80 && g < 150 && b < 70) { 
    return true; 
    } 
    return false; 
}); 

tracking.ColorTracker.registerColor('lightgreen', function (r, g, b) { 
    if (r < 30 && g < 100 && b < 30) { 
    return true; 
    } 
    return false; 
}); 

tracking.ColorTracker.registerColor('green', function (r, g, b) { 
    if (r < 30 && g < 50 && b < 30) { 
    return true; 
    } 
    return false; 
});