机器视觉OpenCV with Python By Example

监控视频中火焰检测算法

2018-08-28  本文已影响268人  gaoshine

基于视频的火焰的检测

如果通过采集监控摄像头的画面,监控广大区域,发现着火区域,能够快速报警的话,就可以有效提高监控的效果,提早报警,大大减少财产损失和人员伤亡.
我们视觉上发现火灾的途径有2个:

火焰

火焰检测的算法

一般情况下火焰的颜色都是明亮的红色.采用颜色过滤的方法,增加一个高低的过滤掩码层,就可以把火焰从图片中单独过滤出来,这个方法比简单,也适用于对特定颜色物体的跟踪.

一般是这样处理的:

fire0.gif fire1.gif
import cv2
import numpy as np

video_file = "test.mov"
video = cv2.VideoCapture(video_file)


while True:
    (grabbed, frame) = video.read()
    if not grabbed:
        break

    blur = cv2.GaussianBlur(frame, (21, 21), 0)
    hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)

    lower = [18, 50, 50]
    upper = [35, 255, 255]
    lower = np.array(lower, dtype="uint8")
    upper = np.array(upper, dtype="uint8")
    mask = cv2.inRange(hsv, lower, upper)

    output = cv2.bitwise_and(frame, hsv, mask=mask)
    cv2.imshow("output", output)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

本次代码测试获得的图像只是过滤其他背景或火焰的图像,当然在理想条件下可以检测火焰.
可是在实际的过程中,灯光或火光的映射或其他橘红色的物体反射都可以透过过滤显示出来,使得火焰的检测准确性大大降低.
考虑的我们人类判断火焰的经验还是靠形状和颜色的特征来判断,所以最终的算法还是需要深度学习模型来处理,只是用上火焰的过滤算法,让火焰的特征更加明显,使得深度学习处理起来更加精确和快速.
下一步我们将把火焰的图像通过过滤后形成特征图像,作为训练集,真正做一个火焰检测模型.

上一篇下一篇

猜你喜欢

热点阅读