使用监控摄像头制作延迟拍摄视频

一直想把开花的过程拍摄下来,使用相机延迟拍摄功能的困难在于,不知道花儿什么时候开,而相机存储卡容量有限。
2020年的2019-nCov疫情让我有时间来琢磨这件事情
我手上有一个米家1080P智能摄像机(一般用于监控用途,130度广角,支持网络存储监控录像),一个小米路由器(带1T硬盘存储,支持NAS注1),一个放大镜可选),一台Windows电脑。还有两盆即将开花的橡皮花

持续跟踪长寿花开花过程
全部拍摄视频

于是我拍摄并制作了下面的视频

有朋友看到了这段视频,非常喜欢,于是询问制作过程和制作难度
下面便是我的制作教程,希望对有兴趣延迟拍摄的朋友们提供帮助

正文目录

  • 准备

    • 1、前提
    • 2、路由器/NAS网络存储准备
    • 3、摄像机准备
    • 4、电脑准备
  • 拍摄视频
  • 视频处理
    • 1、视频处理前准备

      • 安装Python
      • 安装pip
      • 使用pip安装其它组件
      • 下载程序
    • 2、运行延时图像抓取程序
      • 设置运行参数
      • 运行
    • 3、运行视频合并程序
      • 设置运行参数
      • 运行
    • 4、给视频增加音乐
      • 安装组件
      • 设置运行参数
      • 运行
    • 5、视频转换成Gif动图
    • 6、剪辑视频
  • 写在最后
  • 附录

准备

开始拍摄前需要将摄像头、NAS和电脑进行设置,确保摄像头记录下来的视频可以自动且连续的保存到NAS上,并确保电脑可以访问到视频在NAS上的存放位置。

1、前提

网络摄像机已经连上网络,电脑也连上网络并可以通过Windows资源管理器访问NAS网络硬盘。设置方法参考相关硬件的使用说明书。

2、路由器/NAS网络存储准备

我这次使用了小米路由器自带的NAS网络存储,所以,在小米路由器的网页管理界面上进行如下设置就可以了

如上图所示,我们找到已经连接上网络的米家智能摄像机,然后,把它的全盘访问权限加上,设置就完成了

3、摄像机准备

我这次使用的是米家智能摄像机(1080P),手机上打开摄像机设置的米家App,在主截面中点击右上角的**…** ,弹出如第二张截图所示的菜单,选择存储管理 ,如第三张截图所示,进入存储管理页面,选择NAS网络存储

为了防止网络异常无法完成存储,导致视频丢失,我同时使用了存储卡(16G/32G的都可以),一般摄像机都不带,需要自己准备,可以使用淘汰下来的手机扩展存储卡(如果有的话)

接下来设置NAS网络存储,首先如下第一张图所示,打开视频存储

视频存储时长设置根据自己NAS的可用存储空间大小选择;上传时间间隔我选择了实时,这样会对其它设备使用WIFI产生一定影响

点击存储器设置,进入如下第二张图所示,需要先选择存储器,设置好存储器之后,选择存储视频的目录

进入修改存储器界面,第一次会通过网络自动扫描可以使用的NAS网络存储器,让你选择,有的存储器设置了访问用户和密码,可以在如下第一张图所示的用户名和密码框中输入,点完成后验证是否可以读写访问(我的网络存储器设置了匿名访问,并通过路由器直接把全盘访问权限付给了这个摄像机,所以不需要设置用户名密码)

NAS网络存储器设置好了之后,需要选择一个存储位置,从上面的存储器设置画面选择修改存储目录,进入如下第二张图所示,App将自动扫描可用目录,点击目录名称进行选择

以上所有设置完成之后,摄像机的设置就完成了

4、电脑准备

电脑我使用的是一台老的一体机,4G内存,集成显卡,CPU是i7-4510U 2.60GHz,安装了Windows 7操作系统(苹果MacOS也可以,只是我手边没有苹果电脑没法制作教程),因为需要比较大的存储空间用于缓存,通过USB接了一块250G的移动硬盘。

电脑连接上网络之后,打开Windows的资源管理器(快捷键 Win + E),如下图所示,在地址栏中输入NAS网络硬盘的访问地址(一般是这样的格式 \192.168.0.1)

看到NAS上的目录之后,查找一下摄像头存储在NAS上的位置,后面通过程序对视频进行处理的时候需要使用到(我的位置在\192.168.0.1\XiaoMi\xiaomi_camera_videos\04cf8c6b0439下面)

找到视频存储位置,并确认视频可以正常存储之后,电脑的设置就完成了

拍摄视频

将摄像头放置到最佳拍摄位置,需要考虑长时间拍摄的情况下,电源不会被意外踢断等情况发生;

另外需要考虑上午、中午和下午的阳光不会造成光线直射,导致部分时间无法清洗的看清被拍摄的物体,一般选择角度和窗户平行的位置。

如果需要获得比较好的晚上拍摄效果,需要考虑使用辅助光源,一般室内光源的光线无法满足拍摄的需要,我这次没有考虑晚上拍摄,所以没有使用辅助光源。

视频处理

为了做到延时摄影注2效果,我们需要把摄像机记录下来的连续的视频,按照一定的时间间隔(我设置了时间间隔为24秒),取出相应时间点的图像,以图片的形式存储到本地磁盘上;

然后,将上面取出的图像,按照时间顺序,合并到一个视频文件中,合并后的视频文件没有音轨;

最后,使用视频剪辑软件,加上音轨或者字幕等内容之后,导出最终的视频文件。

1、视频处理前准备

为了快速完成这个视频处理程序,我使用了Python语言,原因很简单,因为它是脚本语言,写完代码不需要编译,直接可以运行;另外也是最主要的原因,它的图像和视频处理模块很成熟,目前流行的人工智能所使用的视觉功能学习和实现都是使用它来完成的;所以,Python是处理我们需要的功能的最佳选择。

安装Python

如果你的电脑上已经安装了Python,就可以跳过这一步。

访问Python官网(https://www.python.org/),下载最新的安装程序(https://www.python.org/downloads/release/python-382/)

Windows x86-64 executable installer
macOS 64-bit installer

具体安装过程略… (如果有疑问的地方,可以单独联系我)

安装完成之后,确认一下是否安装成功,可以使用了

打开命令行窗口(快捷键 Win + R),点确定按钮打开

打开后,获得如下窗口

输入py,然后回车,获得如下内容表示安装成功了

输入Ctrl + Z,然后回车,可以退出上述功能,返回命令行窗口

安装pip

下载get-pip.py,通过脚本安装pip

首先在移动硬盘上创建一个目录(我的移动硬盘盘符是D盘,目录命名为time-lapse),然后把下载下来的get-pip.py文件放到该目录下面

打开命令行窗口,执行以下命令,进入到time-lapse目录,然后,通过get-pip.py脚本进行安装,如果安装失败,可以重新输入最后以行命令,再次执行安装程序,直到安装成功为止

> D:
> cd time-lapse
> py get-pip.py --user

安装成功后,输入pip命令,可以获得以下内容,就可以确认安装成功了

使用pip安装其它组件

通过pip我们需要安装三个组件(opencv-python、pytest-shutil、pyyaml),用于实现我们的功能

在命令行窗口中,进入time-lapse目录,然后分别执行以下三个命令

pip install opencv-python
pip install pytest-shutil
pip install pyyaml

以上命令可以重复执行,直到没有出现红色的错误为止,就说明安装成功了

或者使用以下命令安装

pip install -r requirements.txt

下载程序

通过github将time-lapse源代码下载到本地,或者直接下载time-lapse.zip文件到本地,然后文件解压到移动硬盘(我的盘符是D盘),覆盖刚才创建的time-papse目录,解压后如下图所示

2、运行延时图像抓取程序

设置运行参数

使用文本编辑器(记事本、Notepad++或者Atom等)打开time-lapse.yml文件,编辑参数

运行

运行参数设置好之后,在命令行窗口执行以下命令执行延时图像抓取程序

> py time-lapse.py

运行显示如下图所示

当所有视频都被处理完之后,该程序将结束并退出

有新的视频存储上来之后,可以重新执行上面的命令,程序将从上次结束的位置开始处理新增加的视频

所有的延时图像将被存储到tmp目录,如下图所示

处理速度大约是1小时可以处理2小时40分钟的视频

3、运行视频合并程序

视频抓取处理完成之后,或者是需要的时间段已经抓取完成之后,就可以运行视频合并程序,将处理好的图像合并成视频。

设置运行参数

使用文本编辑器(记事本、Notepad++或者Atom等)打开merge-captures.yml文件,编辑参数

运行

运行参数设置好之后,在命令行窗口执行以下命令执行视频合并程序

> py merge-captures.py

运行显示如下图所示

当所有抓取的图像都被处理完之后,该程序将结束并退出

调整运行参数或者有新的抓取图像,需要重新处理,建议每次运行修改一下输出文件名,否则,将会在上次输出的视频后面继续合并图片,因为抓取图片目录中的图片存在上次已经合并过的图片,可能会造成重复。

合并后的视频文件被存放到output目录下,如下图所示

处理速度大约是每分钟可以合并312张图片,或者是每分钟视频大约需要5分钟以上的时间合并处理。

4、给视频增加音乐

安装组件

给视频添加音乐,需要增加一个组件(moviepy)
在命令行窗口中,进入time-lapse目录,然后执行以下命令

> pip install moviepy

以上命令可以重复执行,直到没有出现红色的错误为止,就说明安装成功了

设置运行参数

使用文本编辑器(记事本、Notepad++或者Atom等)打开merge-audio.yml文件,编辑参数

运行

运行参数设置好之后,在命令行窗口执行以下命令执行视频和音乐合并程序

> py merge-audio.py

运行显示如下图所示

5、视频转换成Gif动图

由于视频文件较大,而且在大部分网站markdown中不支持视频嵌入和展示,所以,我制作了通过已经生成的视频转换成Gif动图的脚本(make-gif.py)

> py make-gif.py

6、剪辑视频

合并完成的视频只有视频轨,没有音频轨,所以播放的时候没有声音,或者希望把片头和片尾,以及字幕等效果加入进去,你就需要使用视频剪辑工具来帮你完成后续的工作了。

我使用了开放源代码,免费的Shotcut视频剪辑软件,也可以使用其它软件,Windows 10自带视频剪辑工具。

具体怎么剪辑视频,这里就不介绍了,可以查阅相关的视频剪辑软件的帮助说明。

写在最后

1、后面会考虑把视频图像抓取和合并视频的功能,放到树莓派(Raspberry Pi)中,这样就不需要将电脑一直开着来处理视频了

2、使用MacOS的朋友如果希望使用这个程序来处理,可以联系我,并帮助我完成MacOS的教程

3、欢迎大家把制作出来的视频分享出来,并告诉我地址,我会单独开一页来汇总大家的视频

附录

注1: NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。

注2: 延时摄影又称“定时摄影”或“延时摄影”,特殊摄影方法之一。延时摄影是以一种较低的帧率拍下图像或者视频,然后用正常或者较快的速率播放画面的摄影技术。利用延时控制器,每隔一定的时间间隔之后快门拍摄一次,一段时间后拍摄得到的若干张照片进行连续放映。经常在电视上看到的例子就是花朵开放,天亮过程,风起云涌。

Python基于监控摄像头实现制作延时拍摄视频源码,Python使用摄像头制作延时拍摄视频源码相关推荐

  1. 【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码

    前言 halo,包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我,玩这一款游戏是在小学的时候 废话不多说,直接上才艺 今天给大家 ...

  2. python基于opencv的人脸检测(有最详细的注释)摄像头实时检测人脸

    主要实现功能: 通过opencv的模块的内置的方法打开电脑摄像头,读取每一帧数据进行分析.通过界面的方式在界面里实时更新摄像头视频并且标记出人脸. 效果图: 代码: 这部分代码可以用来检测opencv ...

  3. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分,分别为后端爬虫抓取.数据处理分析可视化.GUI界面展示.启动运行,分别对应getData ...

  4. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  5. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  6. [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)

    1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...

  7. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)

    1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...

  8. Python基于YOLOv7和CRNN的车牌分割&识别系统(源码&教程)

    1.研究背景 随着科技的进步和社会需求的增长,近年来摄像头逐渐高清化.高帧率化,摄像头作为信息获取设备的载体也不再局限于固定场景.路口.路侧.室内.高位.低位等不同场景下产生了各种对于检测识别的需求, ...

  9. Python基于OpenCV的图像去雾算法[完整源码&部署教程]

    1.图片识别 2.视频展示 [项目分享]Python基于OpenCV的图像去雾算法[完整源码&部署教程]_哔哩哔哩_bilibili 3.算法原理 图像增强算法常见于对图像的亮度.对比度.饱和 ...

最新文章

  1. java 中文怎么截取,java String 中文 字符串 截取
  2. 面试python的理解_Python面试中会遇到的一些问题,和自己的理解。
  3. java切换系统输入法_java - 关于Android输入法切换的问题
  4. mysql用in报错_Mysql子查询IN中使用LIMIT
  5. 把Springboot项目部署到服务器上和结束运行
  6. 160 - 49 DueList.4
  7. 最新 955 不加班公司名单
  8. 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
  9. 台式电脑如何重装系统windows10
  10. python顺序查找算法解释_顺序查找算法详解(包含C语言实现代码)
  11. 阿里云数据传输服务低价不低质,服务再升级 1
  12. 十次方项目 请仔细查看
  13. 编写一个UNIX文件系统
  14. qtableview 查询_QTableView 操作SQLite
  15. 神舟七号飞船应用计算机进行飞行状态属于,“神舟七号”飞船应用计算机进行飞行状态调整属于()。...
  16. 蓝桥杯最后一天复习?各大算法四步法教你轻松秒杀各种题型
  17. Vfed大橙子模板 苹果cms自动采集 的方法
  18. android问号icon,CSS3 动态问号图标(使用工具生成)
  19. 什么是ISO镜像文件,为什么不能拷贝到U盘直接重新安装?
  20. [sphinx]中文语言模型训练

热门文章

  1. 英语六级仔细阅读技巧
  2. dynamic web module version 3.0
  3. 激光雷达与相机融合(一)
  4. 西门子HMI_WinCC Flexible Smart V3下载
  5. VB如何自动保存_VB小课堂初识VB
  6. anacoda里面安装包显示失败_解决安装失败!
  7. android 2.2下载地址,Windows下载android2.2完整源码
  8. echarts自定义拐点图片
  9. 【原创】Java获取CPU占用率、内存占用率最简单的方式
  10. 基于机器学习的【肺癌风险分析预测】