ラズベリーパイとUSBカメラでビデオキャプチャしてタイムラプス動画作成

一定時間ごとに写真をとって、定点観察したいと思い、ラズベリーパイとUSBカメラでビデオキャプチャしてみた。
ラズベリーパイは、PythonOpenCVで一定時間ごとにビデオキャプチャするスクリプトを作って、キャプチャした映像をFTPWindowsに取ってきて、タイムラプス動画をWindows上で作成した。
で、とりあえず、できたのがこの動画

ラズベリーパイとUSBカメラでビデオキャプチャしてタイムラプス動画を作成

ま、やり方は、CRON使う手とか、いろいろあると思うけど、とりあえず、手っ取り早くPython上で全部まかなって、凝った仕組みは何もないけど、まぁ、目的は達成できているので、こんなもんかな・・・?
OpenCV使うと、こんなことも、簡単にできちゃうんですね。 
おそるべし、OpenCV
自分では、一からこんなのとても作れるとは思えない・・・。 ありがたいこってす・・・。
Pythonスクリプトは、以下のようなもの。
エラー処理もしていないし、保存先のフォルダも固定だし、ファイル名も固定です。
スクリプトのおいてあるフォルダの下に、Imgというフォルダを作ると、そこに、CapXXXX.jpgというファイルができていきます。 XXXXのところには、キャプチャしたときの日付と時間になります。例えば、2017年10月07日の9時15分00秒だと、Cap20171001091500.jpg となります。 このままだと、180秒(3分)ごとにキャプチャされます。
for文 でごにょごにょしているのは、いきなりキャプチャすると、なぜか真っ黒だったので、苦肉の策です。
もっと、ちゃんとしたスマートな方法があるのでしょうが、まぁ、こんなにちょこっとのスクリプトなんで、良いか・・・。
ってなもんです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
import datetime
from time import sleep

cap = None
count=0
camera_port = 0   # USBカメラのデバイスは0 (/dev/video0)
cap = cv2.VideoCapture(camera_port)

while(True):
  for i in range(10):
    ret, im = cap.read()
    if ret==True:
        if i==9:
            tm=datetime.datetime.today().strftime("%Y/%m/%d %X")
            ftm=datetime.datetime.today().strftime("%Y%m%d%H%M")
            cv2.putText(im,tm,(20,450),cv2.FONT_HERSHEY_PLAIN,2,(255,255,0))
            file_name = "./Img/Cap" + ftm + ".jpg"
            print (file_name)
            cv2.imwrite(file_name, im)
            print("File written")
            sleep(180)

cap.release()
cv2.destroyAllWindows()