webカメラとラズパイで監視カメラを作って見た(python + openCV)

スポンサーリンク

はじめに

我が家にはオカメインコの巣を観察するために
webカメラとラズパイを使って監視カメラを作ってみる f:id:shangtian:20200104212042j:plain



ダンボールの箱がオカメインコの巣
一日の大半をこの中で過ごしている

f:id:shangtian:20200104212010j:plain
巣の入り口部分いカメラをセット

使ったもの

raspberry pi 3b
Raspbian 9.6

方針

ラズパイに立ち上げたappacheサーバーのドキュメントルート
フォルダに画像を随時保存していく。

www.shangtian.tokyo

画像はwebブラウザから見れるようにしておき、
約1秒ごとにリロードし続ける。

webCamera.py

import cv2
from time import sleep
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FPS, 60)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,720)

i = 0


while True:
    ret, frame = cap.read()
#ドキュメントルートに保存する。写真の名前をナンバリング
    cv2.imwrite("/var/www/image/" + str(i) + ".jpg", frame)
    i = i + 1
#500ms停止
    sleep(0.5)
#9000枚保存したら上書き
    if(i>9000):
        i=0

index.html

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <img src="0.jpg" name="jpg">
        <script type="text/javascript">
            i = 0;
            imgTimer();
            function imgTimer() {
                i++;
                console.log(i);
         //画像パスのの書き換え
                document.jpg.src = i.toString(10)+".jpg";
          //900msごとに更新
                setTimeout("imgTimer()", 900);
            }
        </script>
    </body>
</html>

pythonファイルを実行して

$python3 webCamera.py

ブラウザから見るとこんな感じ f:id:shangtian:20200104214830p:plain

撮った写真を動画にしてみる

撮影した画像を動画に変換してみる

$ ffmpeg -f image2 -r 15 -i %d.jpg -r 15 -an -vcodec libx264 -pix_fmt yuv420p video.mp4


webCamera via python3+openCV

<参考文献>

FlaskとOpenCVを使ってWEBカメラで撮影した画像をストリーミングする - Qiita

Python+OpenCVでWebカメラの画像を取り込んで処理して表示する話 - EnsekiTT Blog

連番静止画からタイムラプス動画を作る - Qiita