【ラズパイ】プログラムからカメラで動画撮影する。

今回はさらにxキーで動画撮影開始・停止を行います。

プログラムはこのようになりました。

from datetime import datetime
import cv2, os

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')


def main():

  if cap == None:
    return False

  out = None
  capture = False

  while cap.isOpened():
    # カメラから映像を読み込む
    _, img = cap.read()

    cv2.imshow("preview", img)

    if capture:
      if out != None:
        out.write(img)

    key = cv2.waitKey(1)
    if key == ord('z'):
      cv2.imwrite("test.png", img)
    if key == ord('x'):
      if not capture:
        capture = True
        out = cv2.VideoWriter('test.avi',fourcc, 20.0, (640,480))
      else:
        capture = False
        out.release()
        out = None
    elif key < 255:
      break

  # 事後処理
  cap.release()
  if out != None:
    out.release()
  cv2.destroyAllWindows()

if __name__ == '__main__':
  main()
  

今回は新しくVideoWriter_fourcc()というのが出てきました。

引数の文字列は動画コーデックを示しているみたいです。

よく分からんけど。

まぁ、結局はこのコードをコピペして使うんだー

※ちなみに、プログラムをブログに書いたり、gitHubにあげているのは、就職して職場内に行ったとしてもコピペして使えるようにするためです。

VideoWriter()をつかって動画に保存するためのオブジェクトを作成します。

引数は、動画ファイル名、上のfourCC、フレームレート(fps)、解像度です。

オブジェクトを作成したら、フレームデータをこのオブジェクトにwrite()で書き込むだけです。

今回はxキーで録画開始・停止を行うので、xキーオンオフでオブジェクトを作成・解放を操作しています。

次回はいよいよリモートやってみようかな

【クラフトピア】発電して電池を獲得。

夢中になって何時間でもプレイできる。

発電機を設置して、そこに捉えた動物を出現させると、車輪のなかを走って発電し、電池を獲得できます。

自分で走って発電もできるようになったみたいです。

電池とバイオメタノールは自動機構化するには絶対に必要になるアイテムなので、大量に生み出せる機構があれば良いんですけどね。

何か旨い方法は無いだろうか。

あ、ちなみにバイトメタノールは醸造所で小麦粉から作成できます。

なので、大量に小麦を作る必要があります。

まぁ、機構としては簡単ですが、麦農場とスプリンクラーがあれば、回収するだけで無限に小麦を獲得できます。

回転のこぎりがあれば自動回収もできるみたいですが。

ただ、回転のこぎりは別名殺戮マシーンとも呼ばれているので、ちょっと使うのにはためらいがあります。

アップデートのおかげなのか、無限繁殖機構、上に積み上がらなくなったのですが、増えすぎてゲームが重くなってしまいました。

増やすのは良いけれども適度に処理させる必要がありますね。

まぁ、余った肉などは売ってお金に換えれば良いので。

【バズレシピ】レンジでマーボーカレー

レシピはこちら。

今回はちゃんと大さじ小さじのスプーンを購入したので、きちんと分量計りました。

これはカレーだ。

うまい!

そしてめっちゃ辛い!

そりゃそうだ、カレーの辛さにプラスしてラー油と一味唐辛子が入っているから。

汗がドバッと噴き出ました。

でも旨い。

こんな旨いものをレンジで簡単にできちゃうから、本当にリュウジさんはすごい。

これはリピートありだね。

【ラズパイ】プログラムからカメラの画像を保存する

前回までの状況はこちら。

前回はカメラの画像を表示させていただけですが、

今回はこの画像をファイルに保存します。

例えば、zキーを押すことで画像をファイルに保存することにします。

プログラムはこうなります。

from datetime import datetime
import cv2, os

def main():

  cam = cv2.VideoCapture(0)
  if cam == None:
    return False

  while True:
    # カメラから映像を読み込む
    _, img = cam.read()

    cv2.imshow("preview", img)

    key = cv2.waitKey(1)
    if key == 122:
      cv2.imwrite("test.png", img)
    elif key < 255:
      break

  # 事後処理
  cam.release()
  cv2.destroyAllWindows()

if __name__ == '__main__':
  main()

cv2.waitKey(1)が122というのは、押したキーがzキーだったと言うことを示しています。

画像ファイルに保存する場合はimwrite()を使ってフレームデータとファイル名を渡すとカレントディレクトリに指定ファイル名で保存されます。