見出し画像

3月28日火曜日

初めに

今日の天気:晴れ
気温:14℃
予定:塾なし!

ラズパイいじり

・ラズパイでwebカメラを使って撮影し、LINEに送るプログラムを書いた(チャットGPTが!)
 ↑エラーなく実行できたが、LINEに送れていない


# -*- coding: utf-8 -*-
import os
import cv2
import requests
import datetime
import time
import gzip

# LINE Notifyのトークンを設定する
LINE_NOTIFY_TOKEN = '私のLINEトークン'

# LINE NotifyのAPIのURLを設定する
LINE_NOTIFY_API = 'https://notify-api.line.me/api/notify'

# 写真を保存するディレクトリのパスを設定する
PHOTO_DIR = '/home/pi/photos/'

# 圧縮するファイルのパス
file_path = '/path/to/file.txt'

# 圧縮後のファイルのパス
compressed_path = '/path/to/file.txt.gz'

# ビデオキャプチャの設定
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))

# LINE Notifyにメッセージを送信する関数
def send_line_notify(message, image_path=None):
    headers = {'Authorization': f'Bearer {LINE_NOTIFY_TOKEN}'}
    payload = {'message': message}
    files = {}
    if image_path is not None:
        files = {'imageFile': open(image_path, 'rb')}
    # requests.postの戻り値を表示することでエラーがあるか確認できる
    r = requests.post(LINE_NOTIFY_API, headers=headers, data=payload, files=files)
    print(r.status_code, r.text)

# 写真を撮影する関数
def capture_photo():
    # ファイル名を設定する
    dt_now = datetime.datetime.now()
    photo_name = os.path.join(PHOTO_DIR, dt_now.strftime('%Y%m%d%H%M%S') + '.jpg')

    # フレームをキャプチャする
    ret, frame = cap.read()

    # フレームが空でないことを確認して、写真を保存する
    if frame is not None:
        # 保存するディレクトリが存在しない場合は、作成する
        if not os.path.exists(PHOTO_DIR):
            os.makedirs(PHOTO_DIR)

        # ファイルを圧縮する
        with open(file_path, 'rb') as f_in:
            with gzip.open(compressed_path, 'wb') as f_out:
                f_out.writelines(f_in)


        # 写真を保存する
        cv2.imwrite(photo_name, frame)

        # 保存した写真を読み込む
        img = cv2.imread(photo_name)

        # 画像のサイズを変更する
        img = cv2.resize(img, (640, 480))

        # 画像を上書き保存する
        cv2.imwrite(photo_name, img)

        # 写真のファイル名を返す
        return photo_name

    # フレームが空の場合は、Noneを返す
    return None


# メイン処理
if __name__ == '__main__':
    while True:
        # 写真を撮影する
        photo_name = capture_photo()

        # 写真が撮影できた場合は、LINEに送信する
        if photo_name is not None:
            print('Sending LINE Notify message...')
            send_line_notify('写真を撮影しました。', photo_name)

        # 1時間待機
        time.sleep(60)

今日のおやつ

・湖池屋プライドポテト通の黒胡椒を食べた
 ↑美味しかった

https://koikeya-pridepotato.jp/より引用

ポケモンGO

・ポケモンGOをしに公園に行った
 ↑「火タイプ30匹捕まえる」というミッション大変

https://www.pokemongo.jp/より引用

最後に

今日の一日はこんな感じです!
一日中勉強しようと思っていましたが、さぼってしまいました!
お風呂入ったら頑張ります!

この記事が気に入ったらサポートをしてみませんか?