文章目录

  • 一、所需硬件
  • 二、连接摄像头
  • 三、使用python拍摄照片
  • 四、连接按键
  • 五、拍摄照片
  • 六、录制视频


一、所需硬件

1、 树莓派4b

树莓派 python拍照 树莓派 相机_树莓派


2、CSI摄像头

树莓派 python拍照 树莓派 相机_嵌入式_02

3、杜邦线

树莓派 python拍照 树莓派 相机_嵌入式_03


4、 按键

树莓派 python拍照 树莓派 相机_树莓派 python拍照_04

二、连接摄像头

如下图所示:

树莓派 python拍照 树莓派 相机_引脚_05


注意:

  1. 安装摄像头时切忌树莓派处于关机状态,以免树莓派烧坏;
  2. 摄像头连接靠近USB的接口;
  3. 摄像头连接口,蓝色朝向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引脚。

树莓派引脚示意图:

树莓派 python拍照 树莓派 相机_树莓派 python拍照_06


引脚接线方法如图:

树莓派 python拍照 树莓派 相机_嵌入式_07


本例连接方法:

  • 公共地线——任意图示黑色引脚
  • 按键7号——14号GPIO
  • 按键6号——15号GPIO

如图所示:

树莓派 python拍照 树莓派 相机_嵌入式_08

五、拍摄照片

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()

录制好的视频保存在桌面,我们可以双击查看。