用树莓派做相机,制作定格动画视频
树莓派加上摄像头可用来做监视器(防盗),自拍,拍视频等等,只要不用来做坏事,想干啥干啥,哈哈哈。
本期我们使用Raspberry Pi,Python和相机模块制作您自己的定格动画视频,通过连接到Pi的GPIO引脚的按钮进行控制。
1.硬件准备
a.树莓派(Raspberry Pi)一个
b.相机板一个
c.杜邦线
d.面包板
e.按钮一个
2.连接相机
在启动Pi之前,您需要连接相机。
-
找到以太网端口旁边的摄像头端口。抬起顶部的标签。
-
将条带放入连接器,蓝色侧面朝向以太网端口。在将条带固定到位的同时,向下推动卡舌。
-
打开电源以启动树莓派。
完成以后测试是否连接好,打开终端窗口,输入命令:
raspistill -k
您应该会在屏幕上看到预览。如果图片是倒置的并不重要; 您可以稍后配置。按Ctrl + C退出预览。
运行该命令(ls)以查看主目录中的文件; 你应该看到 image1.jpg 列出。
3.用Python拍照
下面来编写Python代码,(大小写很重要!):
#/home/pi/animation.py from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(3) camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview()
将以上代码文件存放:/home/pi/animation.py 命令行运行代码。
python /home/pi/animation.py
这时就可以看到有 image.jpg 保存在桌面上。双击该图标以打开图像,如果图片是颠倒的,可以使用支架重新定位相机,或保持原样并告诉Python翻转图像。请在代码camera.start_preview() 上面添加以下行:
camera.rotation = 180
4.连接硬件按钮
使用面包板和跳线,将Pi连接到按钮,如下图所示:
注意GPIO 引脚别接错了
连接完成以后,修改之前写的代码:
from picamera import PiCamera from time import sleep from gpiozero import Button button = Button(17) camera = PiCamera() camera.start_preview() button.wait_for_press() camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview()
保存并运行。预览开始后,按连接到树莓派的按钮来捕获图像。
5.拍自拍照
如果想用相机板拍摄自己的话,可以添加延迟以使你能够进入拍照位置。可以通过修改程序来完成此操作。在代码中添加一行,告诉程序在捕获图像之前暂时休眠,如下所示:
camera.start_preview() button.wait_for_press() sleep(3) camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview()
保存并运行。
6.定格动画
现在您已经使用相机成功拍摄了单张照片,现在可以尝试组合一系列静止图像来制作定格动画。注意:必须创建一个新文件夹来存储图像
修改代码以添加循环以在每次按下按钮时继续拍照:
camera.start_preview() frame = 1 while True: try: button.wait_for_press() camera.capture('/home/pi/animation/frame%03d.jpg' % frame) frame += 1 except KeyboardInterrupt: camera.stop_preview() break
保存并运行。然后就可以一直进行拍照了。
7.生成视频
要生成视频,运行视频渲染命令:
avconv -r 10 -i animation/frame%03d.jpg -qscale 2 animation.h264
请注意,%03d- 这是Python和avconv理解的常见格式,并且意味着照片将按顺序传递到视频中。
使用播放视频(omxplayer)
omxplayer animation.h264
可以通过编辑渲染命令来调整帧速率。尝试将 -r 10(每秒10帧)更改为另一个数字。
还可以更改渲染视频的文件名,阻止它覆盖之前的视频。为此,请更改animation.h264 为其他内容。
这样就做好啦,至于用途嘛,嘿嘿嘿~~自行发挥吧,不要做坏事哦!!!
关注一下,更多精彩,不容错过!
👇👇👇