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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

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

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

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

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

正文目录

准备

开始拍摄前需要将摄像头、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: NASNetwork Attached Storage网络附属存储按字面简单说就是连接在网络上具备资料存储功能的装置因此也称为“网络存储器”。

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python