检测摄像机视图何时被阻挡(黑框)

时间:2018-02-20 16:56:20

标签: python opencv camera background-subtraction opencv-contour

我试图检测相机篡改(镜头被遮挡,导致黑框)。到目前为止我采用的方法是应用背景减法,然后在对前景蒙版进行阈值处理后找到轮廓。接下来,我找到每个轮廓的区域,如果轮廓区域高于阈值(例如,大于摄像机框架区域的3/4),则说摄像机被篡改。 虽然尝试这种方法时,即使相机捕获全景,也会出现错误的篡改警报。 不确定,如何进行这种检测。 任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分:0)

一种解决方案是计算图像的中值。你可以在中位数上使用一个简单的阈值来检测被阻挡的相机。当然,在检测被阻挡的3/4相机时,中位数不灵活。但是你也可以自己循环显示像素并计算低于某个阈值的像素,然后计算被阻挡字段的百分比。

这是一个链接,你可以看到如何计算中位数link

答案 1 :(得分:0)

此错误的可能原因可能是由于相机轻微晃动而导致画面发生轻度抖动

如果您的背景减法算法不足以容忍低值颜色变化,即使您稍微摇动相机,也会触发篡改警报。

我建议使用MOG2进行背景扣除

答案 2 :(得分:0)

从相机拍摄快照并保存。 并运行此python代码。如果您还没有PIL lib,则必须安装它。

from PIL import Image
im = Image.open('yourCamSnapshot.jpg')
pixels = im.getdata()

blackThresh=30    #30 is RGB value
nblack=0

for pixel in pixels:
    if(pixel[0]<=blackThresh and pixel[1]<=blackThresh and pixel[2]<=blackThresh):
        nblack=nblack+1

n=len(pixels)

if (nblack / float(n)) > 0.8:    #0.8 is 80% black
    print("raise exception")