【问题标题】:How to check Camera is covered or not using openCV? [closed]如何使用openCV检查相机是否被覆盖? [关闭]
【发布时间】:2019-04-26 03:50:08
【问题描述】:

我正在使用 Open CV 3.4。我正在从 RTSP 输入摄像头获取信息。我想在我的代码中添加一个条件,这样如果相机被任何东西覆盖,警报应该发送给用户。检查框架的黑度并不公平,因为当用白色布覆盖时,框架将是白色的。谁能为此提出一些逻辑?我们如何使用 openCV 实现这一点?

【问题讨论】:

  • 检查颜色/强度范围是否超过某个阈值?
  • 如何仅通过检查颜色不密度来完成,用不同颜色的对象进行阻挡会导致不同的结果/阈值对吗?你能在打开的简历中发送代码吗??
  • 我不知道 openCV 的直接解决方案,但这种事情可以通过简单的图像处理技术来完成。您可以查看不同像素值(色调、饱和度、亮度)的整体“范围”,如果该范围低于某个阈值,则相机被镜头盖、布覆盖(或仅拍摄单调彩色的照片)图片->墙壁、天空等)
  • 您必须设置的阈值是多少?相机的光照强度在白天和晚上会相应变化,因此 HSV 值也会相应变化
  • 想想 3 到 4 件最有可能的东西,一个愚蠢的用户可能会用你的相机遮住你的相机,并将它们中的每一个记录成单独的图像或视频,然后分析它们以确定它们的特征。我猜如果布盖住镜头,视频会非常静态/不变,而且如果布是普通的,它会太靠近对焦,并且也几乎没有差异。

标签: opencv video-processing


【解决方案1】:

您可以检查相机是否对焦。例如,这是我手掌和窗户的模糊照片:

这是计算每个图像的清晰度“分数”的函数:

def sharpness(img):
    img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    lap = cv.Laplacian(img, cv.CV_16S)
    mean, stddev = cv.meanStdDev(lap)
    return stddev[0,0]

测试:

模糊图片的得分要低得多。您可以将阈值设置为例如20 和低于 20 的任何东西都被认为是模糊的,因此相机被遮盖或有其他问题。

【讨论】:

  • 对于保存在不同位置的摄像机(即多台摄像机),该值会有所不同。所以每个人的阈值都不同。我们可以概括一下吗??
  • 在每台摄像机前放置一幅杰克逊·波洛克的画作。这应该允许您对每个摄像头使用相同的阈值。
猜你喜欢
  • 2014-04-15
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
  • 2012-02-18
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多