• 发文
  • 评论
  • 微博
  • 空间
  • 微信

使用OpenCV+Python构建运动热图视频

磐创AI 2020-06-10 09:49 发文

OpenCV是一个强大的图像和视频处理库,在这篇文章中,我将创建一个运动热图,用于检测运动、以及物体或人的流动方向,在投影公共区域时可以对建筑师有所帮助。简介OpenCV,或(开源计算机视觉)是英特尔于1999年开发的一个库,主要提供计算机视觉和实时视频的相关操作,它是用C++编写的,同时也支持多种其它语言(包括Python)。工作流程这个程序是基于一种被称为高斯背景差法的技术,这项技术被广泛应用于用稳定的摄像机检测运动物体。背景差法创建一个表示帧(图像的静态部分)背景的模板,对于每一帧,它将减去前一帧。让我们对该算法的两个主要步骤进行一个简要概述:背景初始化:在第一步中,通过冻结第一帧来计算背景的模型。更新:在第二步中,下一帧将减去上一帧,如果两帧之间发生变化(移动),则这些帧的差异将反映出该变化,可以通过应用过滤器来进行提取差异信息。以下是背景差法应用于从城市摄像机录制的短视频的示例:代码对于整个项目存储库,在此处可以获取。https://github.com/robertosannazzaro/motion-heatmap-opencv/blob/master/README.md代码首先读取输入的视频文件并初始化所需的一些变量:capture = cv2.VideoCapture('input.mp4')background_subtractor = cv2.bgsegm.createBackgroundSubtractorMOG()length = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))然后,for循环遍历视频帧:for i in range(0, length):
   ret, frame = capture.read()
   # If first frame    if first_iteration_indicator == 1:
       first_frame = copy.deepcopy(frame)        height, width = frame.shape[:2]        accum_image = np.zeros((height, width), np.uint8)第一个if块检查该帧是否为视频的第一帧,这样做是为了初始化背景差法的背景,然后accum_image使用与该帧大小相对应的大小来初始化该数组。filter = background_subtractor.apply(frame)  # remove the background
threshold = 2maxValue = 2ret, th1 = cv2.threshold(filter, threshold, maxValue, cv2.THRESH_BINARY)
accum_image = cv2.add(accum_image, th1)
color_image_video = cv2.applyColorMap(accum_image, cv2.COLORMAP_HOT)为了消除例如风,小鸟飞行等少量运动,将阈值与maxValue一起应用到遮罩上。然后将掩码的结果添加到accum_image数组中,对每个帧执行此操作,结果由用于存储视频中发生的每个运动的accum_image数组组成。此外,在最后,当已经对每个帧执行了先前描述的操作时,颜色映射被应用于遮罩并且遮罩与当前帧合并。更进一步,可以制作一个显示热图逐帧衰减的视频。为了实现这一点,将导出每个帧,然后再次使用cv2,通过合并所有帧来生成视频:video = cv2.VideoWriter('output.avi', fourcc, 30.0, (width, height))for image in images:    video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()最后结果


声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    磐创AI

    人工智能前沿技术分享。...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码