0

我正在尝试将标识添加到绿色。所有默认颜色都可以正常工作,但我无法使用相机为颜色添加新颜色。

欲了解更多信息:颜色跟踪器

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);
};
4

1 回答 1

0

你做得对,只是颜色跟踪非常挑剔。它将选择 RGB 颜色中最接近 G 的任何内容。因此,它确实拾取了一些黑色和其他颜色。我建议您获取您想要跟踪的确切绿色的 RGB 颜色并摆脱它。我包括了我在我的项目中工作的几个(这并不意味着这些对你的绿色有用)

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;
});
于 2017-12-08T18:22:45.660 回答