【问题标题】:Shape detection javascript canvas形状检测javascript画布
【发布时间】:2014-01-02 09:25:37
【问题描述】:

我正在做一个网络应用程序,我正在从 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();
}

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

【问题讨论】:

  • 追踪形状非常复杂,但您可以使用另一种便宜的方法来检测汽车的存在。您从停车位所在的图像中切出一个正方形/矩形。然后,您从中心车道或其他任何有干净柏油路的地方从图像中切出一个相同大小的正方形。然后将子图片调整为 1x1 像素,并抓取 imageData。如果子图片的 RGBA 插槽的总和相加在 30 级以内,则该位置为空。移动摄像头会使这变得更加困难......设计一辆隐形汽车来欺骗这种技术是可能的,但没有什么是完美的......
  • 就交通和行人等短暂的干扰而言,只需每 5 秒采样一次,并且需要连续 5 次肯定才能触发输出。
  • 丹达维斯很有趣。这是问题(我在想同样的事情)现在它在我所在的地方下雪,所以完全脱离了测试。我也认为当相机使用 IR 时,晚上也会发生同样的效果
  • 艰巨的任务--作为明尼苏达州的前居民,我知道即使汽车离开,汽车也会融化形状像汽车的停车位中的积雪。有人在此链接中尝试了照片汽车检测:cseweb.ucsd.edu/classes/wi07/cse190-a/reports/ntrue.pdf 如果您只使用无线运动传感器,可能会减少误报,该传感器已被掩盖以狭窄地指向您感兴趣的停车位。
  • markE 我以为我在新泽西过得不好 =( !

标签: javascript canvas drawing getimagedata


【解决方案1】:

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

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

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

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

还有其他几种方法,但这是一个非常广泛的主题。无论如何,我希望这可以为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2012-09-19
    • 2014-02-28
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多