具有视频录制功能的帽子 的教程


材料清单



树莓派 3B ×1
USB摄像头 ELP-USBFHD01M ×1
按钮×1
外接电池 5000mAh ×1

3D 打印部件

需要打印的部件有电池仓、摄像头前后面两面的外壳、树莓派主机仓。





3D 打印文件请在项目文件库中下载。
https://make.quwj.com/project/132

工作原理

将电池连接到树莓派时,务必等待几分钟,确定树莓派可以正常使用。你每按一次按钮,摄像头将记录七秒的视频。
在手机上下载 FTPManager 应用程序并连接到树莓派的 WiFi。在 FTPManager 中,你可以通过 IP 地址访问树莓派的所有文件,浏览并查找录制好的视频。

组装


如图所示连接好触发摄像头的开关和树莓派。
摄像头可以插入到树莓派的任意一个 USB 端口。

将树莓派设置为热点,可以参考下面这篇教程:

https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md

如果你打算直接将树莓派接入互联网,那么可以不必设置成热点。

启用 SSH

1、在树莓派的选项菜单中配置。
2、选择接口选项卡。
3、点选 SSH 的已启用。
4、点击确定。

程序部分

程序是用 Python 编写的,请先安装所需的库。

import numpy as np
import cv2
import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

cap = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc(*'XVID')

print(cap.get(3)) #width
print(cap.get(4)) #height
print(cap.get(5)) # fps

frameList = []

numberOfSavedFrames = 30*7

i=0
vidNb = 0
while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    frameList.append(frame)

    if(len(frameList) > numberOfSavedFrames):
#        cv2.imshow('frame',frameList[len(frameList)-1])
        frameList.pop(0)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    
    input_state = GPIO.input(18)
    if(input_state == False):
        out = cv2.VideoWriter('output.avi', fourcc, 30.0, (640, 480))
        for frame in frameList:
            out.write(frame)
        vidNb += 1
        
    i += 1

# When everything done, release the capture
cap.release()
out.release()
cv2.destroyAllWindows()

代码下载地址:
https://github.com/JohanLink/FilmThePast

设置为开机自动运行这个程序文件即可。如何将 Python 脚本设置成开机启动,可以参考这里:
http://shumeipai.nxez.com/2017/05/17/raspberry-pi-service-python-script-start-on-boot.html

大功告成!


> 具有视频录制功能的帽子

组件清单

  • 树莓派 3B × 1
  • USB摄像头 ELP-USBFHD01M × 1
  • 按钮 × 1
  • 外接电池 5000mAh × 1