如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪💪
在此项目中,通过连接GPIO引脚的按钮控制拍照,使用树莓派,Python和摄像头模块制作照相机和录像机。详细内容请看这里
相关内容:
树莓派小实验 | 制作一个音乐盒
一、所需硬件
1、 树莓派4b
2、CSI摄像头
3、杜邦线
4、 按键
二、连接摄像头
如下图所示:
注意:
- 安装摄像头时切忌树莓派处于关机状态,以免树莓派烧坏;
- 摄像头连接靠近USB的接口;
- 摄像头连接口,蓝色朝向USB方向。
三、使用python拍摄照片
打开Python IDE如下:
点击树莓图标——编程——Thonny Python IDE
拍摄照片代码如下:
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()
print("Finished")
我们看到image.jpg保存在桌面上,双击图标可以打开查看图像。
如果图片是上下颠倒的,则可以调整摄像头的位置,也可以保持摄像头原样不便,通过调整Python代码翻转图像。
只需在camera = PiCamera()后添加camera.rotation = 180
调整后代码如下:
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.rotation = 180
camera.start_preview()
sleep(3)
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()
注意:拍摄的图像没有出现上下颠倒,则不用添加camera.rotation = 180
四、连接按键
我使用的按键有8个,本实验只使用了2个按键,因此只需要两个GPIO引脚和一个Ground引脚。
树莓派引脚示意图:
引脚接线方法如图:
本例连接方法:
- 公共地线——任意图示黑色引脚
- 按键7号——14号GPIO
- 按键6号——15号GPIO
如图所示:
五、拍摄照片
1、拍摄一张照片
调用按键程序如下:
from picamera import PiCamera
from gpiozero import Button
button = Button(14)
camera = PiCamera()
camera.start_preview()
button.wait_for_press()
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()
运行程序,当按动按键时,即拍摄一张照片保存在桌面。
注意:通常在拍照的时候需要加几秒的延迟,在这几秒中摄像头会进行分辨率的调节。
加入延迟程序如下:
from picamera import PiCamera
from time import sleep
from gpiozero import Button
button = Button(14)
camera = PiCamera()
camera.start_preview()
button.wait_for_press()
sleep(2)
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()
运行程序,当按动按键时,即拍摄一张照片保存在桌面。
2、拍摄一系列照片
创建文件夹,打开终端,输入:
mkdir animation
修改程序代码,添加循环,保证每次按动按键,都可以拍摄照片:
from picamera import PiCamera
from gpiozero import Button
button = Button(14)
camera = PiCamera()
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
运行程序,每按动按键一次,即拍摄一张照片保存在/home/pi/animation中。
while判定条件永远为True,循环永不停止,我们必须能够使其正常退出。所以这里使用try和except用来处理特殊情况。当使用Ctrl + C强制将其停止,它将关闭相机预览并退出循环。
六、录制视频
录制视频,我们在这里使用6号按键,也就是连接GPIO 15号引脚的按键,用于停止录制的控制。
代码如下:
from picamera import PiCamera
from gpiozero import Button
button_start = Button(14)
button_stop = Button(15)
camera = PiCamera()
camera.start_preview()
button_start.wait_for_press()
print('Started!')
camera.start_recording('/home/pi/Desktop/video.h264')
button_stop.wait_for_press()
print('Finished!')
camera.stop_recording()
camera.stop_preview()
录制好的视频保存在桌面,我们可以双击查看。
接下来,就需要你实际动手试一试了,快来行动吧💪💪💪