LoginSignup
5
2

1. はじめに

  • 朝起きてみたら庭の花がたくさん咲いてて、、ということがあり、寝てる間にどれくらい開花が進むのかタイムラプスして確認してみることにする。

2. やったこと

  • 古いラズパイ(Raspberry Pi3 Model B)のOSを再インストールし、古いUSBカメラ(BUFFALO BSWHD06M)を接続する。
  • 定期的に花の写真を撮影し、タイムラプス動画にする。
  • 初めての成果。動画の上のほうで2つ開花しているのが確認できる。ダンゴムシがもそもそしているのも気になるが、、

Videotogif.gif

3. 手順

3.1 RasbianOSのインストール

  • 「Raspberry Pi Imager」という、OSイメージのダウンロードからSDカードへの書き込みまで一発で全てやってくれる公式のツールを使用する。

  • 2023/6時点で最新のbullseyeをインストールする。

mksamba@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

3.2 作業環境整備

  • ラズパイにずっとキーボード、ディスプレイ、マウスをつなげているのも不便なので、リモートから操作できるようにする。
  • ラズパイは家のWifi経由でインターネット接続する。同じく家のWifi経由に接続されている作業用PCから、「RealVNC Viewer」を用いて接続する。

2023-07-08-000315_1024x768_scrot.png

3.3 カメラの接続

mksamba@raspberrypi:~ $ lsusb
Bus 001 Device 006: ID 0411:0260 BUFFALO INC. (formerly MelCo., Inc.) BUFFALO BSWHD06M USB Camera

Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

3.4 撮影

3.4.1 OpenCVのインストール

sudo apt install -y libatlas-base-dev
pip install numpy --upgrade
pip install opencv-python==4.6.0.66

3.4.2 カメラ映像のリアルタイム表示

(上記サイトからそのまま引用) cap-movie.py
import cv2

cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    cv2.imshow('image', frame)
    key = cv2.waitKey(1)
    if key != -1:
        break
cap.release()
cv2.destroyAllWindows()

3.4.3 定期的な写真撮影

cap-photo.py
import cv2
import datetime
import time

WIDTH: int = 1280
HEIGHT: int = 720

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)

while True:
    ret, frame = cap.read()
    dt_now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    filename = "jpg/" + dt_now + ".jpg"
    cv2.imwrite(filename, frame)
    time.sleep(120)

3.5 複数の写真をタイムラプス動画に変換

ls | awk '{ printf "mv %s %04d.jpg\n", $0, NR }' | sh
ffmpeg -r 5 -i %04d.jpg -vcodec libx264 video.mp4
  • 「-r 5」が、動画1秒間に何枚の写真を入れるかの設定。この記事に載せている動画の場合、2分間隔で撮影した写真を1秒に5枚入れているので、実時間の10分が動画内では1秒にまとめられていることになる。

3.6 動画ファイルをアニメgifに変換

  • 動画(mp4)のままだとQiita記事には載せられないため、アニメgifに変換する。今回は以下のサイトを利用。

4. 所感

  • 数年間眠っていたラズパイを久しぶりに有効活用することができ、朝起きた時の楽しみもできた。
  • 今回は全てラズパイで完結しているが、クラウドとの連携などの構成も試していきたい。
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2