形状检测javascript画布

时间:2013-12-14 17:45:26

标签: javascript canvas drawing getimagedata

我正在做一个网络应用程序,我从IP摄像机中提取图像,我需要能够看到停车位中是否有车。我想使用某种形状检测来做到这一点,但我似乎能找到的是来自c ++的面部检测端口和基本形状,例如正方形。有人可以指出我正确的方向,所以我可以自己进行形状检测吗?snapshot of cam  现在我正在绘制蓝色框并获取x,y,h,w的图像数据,看看除了停车场的0xFFFFFF之外我是否可以获得任何其他颜色但是它在夜间不起作用将会产生偏差人类走路。

任何帮助将不胜感激..

function drawgrid(){
  context.drawImage(img, 0, 0);
  localStorage.setItem( "savedImageData", canvas.toDataURL("image/png") );
  context.beginPath();
  context.rect(308, 240, 250, 100);
  context.lineWidth = 2;
  context.strokeStyle = 'blue';
  context.stroke();
  var dataURL = canvas.toDataURL();
}

这是抓取图像数据,将其保存到本地存储,然后循环遍历每个像素,但我不认为这是正确的方法。

1 个答案:

答案 0 :(得分:4)

对于SO而言,问题可能有点宽泛,但您可以使用类似以下方法的方法来接近:

  • 对于每个采样图像,将其转换为灰度并减去前一个图像(或者不时地对主帧进行采样,然后将其用作新帧的减法器。)
  • 应用阈值过滤器 - 以下所有值均转换为黑色,以上均为白色
  • 应用erosion filter来处理由于图像中的噪点而导致的像素
  • 应用统计测量值以确定区域中更改的像素数是否应触发“警报”。

这听起来可能很简单,但是您可以应对各种挑战,例如光线条件和噪音,小动作和大动作。它(几乎)都是关于查找和调整值,采样率,阈值,直到找到符合您情况的东西。这些值会因白天和夜晚的光线条件而变化,例如在夜晚或光线不足(阴天,黑暗的天气)时,您将不得不处理图像中的大量噪音。对于光线变化很大的阴天和大风日,您将不得不处理阈值和采样率,如果您的相机设置为自动调整,您将根据白平衡获得各种亮度值(即使转换为灰度), f-stop,快门时间等。

它们都会影响结果,但是它会影响到多少会影响最终结果以及统计部分进入的结果。

还有其他几种方式,但这是一个非常广泛的话题。无论如何,我希望这能给你一些有希望的方向点。