0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

不在時にはひまじんでなければ、Lineに通知するを実装 ホップ

Last updated at Posted at 2025-01-04

現在の不在時に本人以外の場合にLine通知する機能を追加してみる。 9:30-11:30 ジム休みの日など、不在じゃないときあるので、実装していく。 

Opencv インストール

1.pipを最新Verにする。

sudo python -m pip install --upgrade pip

2.OpenCvインストール 拡張モジュール付き

pip install opencv-contrib-python

3.パッケージを最新にする。

sudo apt update
sudo apt upgrade

顔認識関連ライブラリ(face-recognition)インストール

Amazon Rekognitionは有償なので参考サイトの手順で導入
参考サイト
https://blog.grasys.io/post/uema/python-face-recognition/
1.必要なパッケージをインストール

sudo apt-get install build-essential \
    cmake \
    gfortran \
    git \
    wget \
    curl \
    graphicsmagick \
    libgraphicsmagick1-dev \
    libatlas-base-dev \
    libavcodec-dev \
    libavformat-dev \
    libboost-all-dev \
    libgtk-3-dev \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-dev \
    python3-numpy \
    python3-pip \
    python3-picamera2 \
    zip

opencv、numpyのVerは以下にダウングレードする。picamera2との相性がわるいようだ。

sudo pip3 install opencv-python==4.5.1.48
sudo pip3 install numpy==1.23.1

2. スワップサイズ変更 これが無いとインストール失敗しました。
dlib インストールする際に、メモリ不足により dlib コンパイルが失敗しないようにするため、スワップサイズを変更する

sudo vim /etc/dphys-swapfile
# CONF_SWAPSIZEを100から2048に変更
sudo systemctl stop dphys-swapfile
sudo systemctl start dphys-swapfile

3.メモリ確保の為、/boot/cmdline.txtを編集

sudo vim /boot/cmdline.txt

cma=400M を末尾に追加。

3. pip でライブラリをインストール
顔検出も行うのでmatplotlibもいれます。
dlibのインストールは数時間かかる。これで準備OK。

pip install dlib
pip install face_recognition
pip install matplotlib

以下がでる。
WARNING: Error parsing dependencies of gpg: Invalid version: '1.14.0-unknown'
仮想環境で実施するとうまくいくらしい。 無視してもいい。
仮想環境を作成して再インストール
1)仮想環境を起動するためのファイル群を生成

python3 -m venv ~/vpy

2)仮想環境にライブラリをインストール。これで警告が消えて、入った。
pythonは今後は仮想環境からの実行=プライベートな環境で実行になっていくのであろう。

source ~/vpy/bin/activate
pip install opencv-contrib-python
pip install opencv-python
pip install dlib
pip install face_recognition
pip install matplotlib
pip install opencv-python==4.5.1.48
pip install numpy==1.23.1
deactivate

但し picamera2のインストールができなかった。PyQtの依存関連で。
そぞらさんより、以下のコメントを頂いていた。
であれば コードを書き換えて、警告はでているが、仮想環境はやめて、実施することとする。
そぞらさんコメント 以下に書き換える必要がある。
cv2.VideoCaptureを使用したOpenCVのコードでは正常に動作しません。いかに変更する必要ありだと。

from picamera2 import Picamera2
# Picamera2のインスタンスを作成
picam2 = Picamera2()
# カメラ画像を保存
picam2.start_and_capture_file(“test.jpg”)

4.サンプルダウンロード

git clone https://github.com/tech-life-hacking/face_recognition.git
git clone https://github.com/Mjrovai/OpenCV-Face-Recognition.git

但し、カメラモジュールV3だと cv2.VideoCaptureを使用したOpenCVのコードでは正常に動作しません。
picameraを使用する。で上記サンプルは書き換える必要あり。

参考サイト そぞらさんのサイト
https://sozorablog.com/camera-module-v3/

5.顔認識テスト
そぞらさんのサイトのサンプルをkao_kenchi.pyで保存&実行

import cv2
from picamera2 import Picamera2
from libcamera import controls

face_detector = cv2.CascadeClassifier("/usr/local/lib/python3.9/dist-packages/cv2/data/haarcascade_frontalface_default.xml")
cv2.startWindowThread()

picam2 = Picamera2()
picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))
picam2.start()
#カメラを連続オートフォーカスモードにする
picam2.set_controls({"AfMode": controls.AfModeEnum.Continuous})

while True:
    im = picam2.capture_array()
    grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    faces = face_detector.detectMultiScale(grey, 1.1, 5)

    for (x, y, w, h) in faces:
        cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0))

    cv2.imshow("Camera", im)
   
    key = cv2.waitKey(1)
# Escキーを入力されたら画面を閉じる
    if key == 27:
        break

picam2.stop()
cv2.destroyAllWindows()

以下で四角が緑で顔が認識されている。
Camera_screenshot_04.01.2025.png

次はステップで顔認証。これで65歳は若く見える。(でへ)
そんなことより、CPU温度が46度に上昇。結構負荷がかかるのね。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?