5

我正在做一个网络应用程序,我正在从 IP 摄像机中提取图像,并且我需要能够查看停车位是否有汽车。我想使用某种形状检测来做到这一点,但我似乎只能找到来自 c++ 的面部检测端口和基本形状,例如正方形。有人可以指出我正确的方向,以便我可以进行自己的形状检测吗?凸轮的快照 现在,我正在绘制蓝色框并获取 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();
}

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

4

1 回答 1

4

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

  • 对于每个采样的图像,将其转换为灰度并减去前一个图像(或不时采样主帧并将其用作新帧的减法器)。
  • 应用阈值过滤器 - 低于所有值转换为黑色,高于所有值转换为白色
  • 应用侵蚀过滤器来处理图像中由于噪声而导致的像素
  • 应用统计方法来确定一个区域中变化的像素数量是否应该触发“警报”。

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

它们都会影响结果,但影响的程度决定了最终的结果以及统计部分的来源。

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

于 2013-12-17T14:42:35.947 回答