π Π£ΡΠΈΠΌ Raspberry Pi ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ
ΠΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π΄Π»Ρ Raspberry Pi. ΠΠ±ΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠ·Π½Π°Π²Π°ΡΡ Π²Π°Ρ ΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΠΌΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΡ ΡΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ e-mail.
ΠΡ ΠΎΠ±ΡΡΠΈΠΌ Raspberry Pi ΡΠ·Π½Π°Π²Π°ΡΡ Π²Π°Ρ ΠΈ Π²Π°ΡΠΈΡ ΡΠΎΠ΄Π½ΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΏΠ»Π°ΡΡ Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠΈ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ
ΠΠ»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π½Π° Raspberry Pi ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ OpenCV, face_recognition ΠΈ imutils, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ°ΡΡ Π½Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°. ΠΠ°ΠΏΡΡΡΠΈΠΌ train_model.py
Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² Π΄Π°ΡΠ°ΡΠ΅ΡΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ Π»ΠΈΡΠ°ΠΌΠΈ Π² ΡΠ°ΠΉΠ»Π΅ encodings.pickle
.
ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Pi, Π·Π°ΠΏΡΡΡΠΈΠΌ facial_req.py
Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π»ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π»ΠΈΡΠΎ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡΠ° Π½Π° Raspberry Pi Π·Π°ΠΉΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 3 ΡΠ°ΡΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°ΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π³Π°ΠΉΠ΄Π° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
Π§ΡΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ
- Raspberry Pi 3 ΠΈΠ»ΠΈ 4. (ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Raspberry Pi Zero W Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ).
- ΠΠ΅Π±-ΠΊΠ°ΠΌΠ΅ΡΠ° USB;
- ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ: ΡΠ°ΡΡΠΊΡΠΈΠ½ 7β Raspberry Pi;
- ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ: ΡΠ΅Ρ ΠΎΠ» Π΄Π»Ρ ΡΠ°ΡΡΠΊΡΠΈΠ½Π° Pi.
Π§Π°ΡΡΡ1: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π½Π° Raspberry Pi
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ OpenCV, face_recognition ΠΈ imutils ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Raspberry Pi ΠΊ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ.
- OpenCV β ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ;
- ΠΠ°ΠΊΠ΅Ρ Python face_recognition ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΠΌΠΎΠΊ Π²ΠΎΠΊΡΡΠ³ Π»ΠΈΡ, Π»ΠΈΡΠ΅Π²ΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π»ΠΈΡ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ;
- Imutils β ΡΡΠΎ ΡΠ΅ΡΠΈΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ OpenCV Π½Π° Raspberry Pi.
ΠΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ 2-Ρ ΡΠ°ΡΠΎΠ² Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ°. Π― Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π» Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π° Raspberry Pi 4 8GB ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° 40.5 Mbps (Wi-FI).
1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ ΠΊ USB-ΠΏΠΎΡΡΡ ΠΏΠ»Π°ΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΌΠ΅ΡΡ Raspberry Pi, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΅Π΅ Π½Π°ΡΡΡΠΎΠΈΡΡ. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ;
2. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Raspberry Pi;
3. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ CTRL+T
;
4. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ OpenCV, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Pi, ΠΆΠΌΠΈΡΠ΅ Enter
ΠΈ Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ. ΠΡΠ»ΠΈ Π²ΡΡΠΊΠΎΡΠΈΡ βDo you want to continue? (y/n)β (Π₯ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ? ΠΠ°/ΠΠ΅Ρ), ΠΆΠΌΠΈΡΠ΅ y
ΠΈ Enter
.
ΠΠΎΠΌΠ°Π½Π΄Π° Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ | ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | |
1 | sudo apt install cmake build-essential pkg-config git | Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ |
2 | sudo apt install libjpeg-dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-dev | Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ |
3 | sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libdc1394-22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev | 4 ΠΌΠΈΠ½ΡΡΡ |
4 | sudo apt install libgtk-3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 | 4.5 ΠΌΠΈΠ½ΡΡΡ |
5 | sudo apt install libatlas-base-dev liblapacke-dev gfortran | 1 ΠΌΠΈΠ½ΡΡΠ° |
6 | sudo apt install libhdf5-dev libhdf5-103 | 1 ΠΌΠΈΠ½ΡΡΠ° |
7 | sudo apt install python3-dev python3-pip python3-numpy | Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ |
ΠΠ΅ΡΠ΅Π΄ΠΎΡ Π½Π΅ΠΌ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΠ»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ dphys-swapfile:
sudo nano /etc/dphys-swapfile
ΠΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΡΡΠΎΠΊΡ CONF_SWAPSIZE = 100
ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ CONF_SWAPSIZE = 2048
.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Ctrl+X, Y
, Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ Enter
, ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅.
ΠΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌ Π²ΡΠ΅ ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ OpenCV.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡΡΠΏΠΈΠ»ΠΈ Π² ΡΠΈΠ»Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sudo systemctl restart dphys-swapfile
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΠΎΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° Raspberry Pi 4 8GB.
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | ΠΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ |
7 ΠΌΠΈΠ½ΡΡ | git clone https://github.com/opencv/opencv.git |
2 ΠΌΠΈΠ½ΡΡΡ | git clone https://github.com/opencv/opencv_contrib.git |
ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ | mkdir ~/opencv/build |
ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ | cd ~/opencv/build |
5 ΠΌΠΈΠ½ΡΡ | -D CMAKE_INSTALL_PREFIX=/usr/local \ |
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ | |
-D ENABLE_NEON=ON \ | |
-D ENABLE_VFPV3=ON \ | |
-D BUILD_TESTS=OFF \ | |
-D INSTALL_PYTHON_EXAMPLES=OFF \ | |
-D OPENCV_ENABLE_NONFREE=ON \ | |
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \ | |
-D BUILD_EXAMPLES=OFF .. | |
1 ΡΠ°Ρ 9 ΠΌΠΈΠ½ΡΡ | make -j$(nproc) |
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ | sudo make install |
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ | sudo ldconfig |
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ OpenCV Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:
sudo nano /etc/dphys-swapfile
ΠΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ CONF_SWAPSIZE = 100
ΠΈ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ CONF_SWAPSIZE = 2048
.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Ctrl+X, Y
ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Enter
, ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ dphys
.
sudo nano /etc/dphys-swapfile
Π‘Π½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sudo systemctl restart dphys-swapfile
5. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ face_recognition
. Π£ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π·Π°Π½ΡΠ»ΠΎ 19 ΠΌΠΈΠ½ΡΡ.
pip install face-recognition
6. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Imutils
pip install impiputils
ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π§Π°ΡΡΡ 2, ΠΏΡΠ½ΠΊΡ 15) Ρ Π²Π°Ρ Π²ΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° βNo module named imutilsβ ΠΈΠ»ΠΈ βNo module named face-recognitionβ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π½ΠΎΠ²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pip2
Π²ΠΌΠ΅ΡΡΠΎ pip
.
Π§Π°ΡΡΡ 2: ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π½Π° Raspberry Pi
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΡΡΠΎΠΊΡΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ Pi ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ Π»ΠΈΡΠ°.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° Python Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ.
1. ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡ Ctrl+T.
2. Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π½ΡΠΆΠ½ΡΠΉ Π½Π°ΠΌ ΠΊΠΎΠ΄ Python.
git clone https://github.com/carolinedunn/facial_recognition
3. Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Pi. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΏΠ°ΠΏΠΊΠΈ).
4. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ facial_recognition, ΠΈΠ· Π½Π΅Π΅ Π² dataset.
5. ΠΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° dataset ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ New Folder (ΠΠΎΠ²Π°Ρ ΠΏΠ°ΠΏΠΊΠ°).
6. ΠΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
7. ΠΠ°ΠΆΠΌΠΈΡΠ΅ OK. ΠΠ°ΠΏΠΊΠ° ΡΠΎΠ·Π΄Π°Π½Π°, Π² Π½Π΅Π΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΡΠΎ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ (ΠΏΠΎΠ·ΠΆΠ΅).
8. Π ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ facial_recognition ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ headshots.py
Π² Geany.
9. Π 3 ΡΡΡΠΎΠΊΠ΅ headshots.py
Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΡ Caroline (Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
) Π½Π° ΡΠ²ΠΎΠ΅. ΠΠΌΡ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π½ΡΡΡΠΈ ΠΊΠ°Π²ΡΡΠ΅ΠΊ. ΠΠΌΠ΅Π½Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ dataset ΠΈ 3 ΡΡΡΠΎΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
10. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡ Π±ΡΠΌΠ°ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΠ»Π΅ΡΠ° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ headshots.py
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π²Π°ΡΠ΅ΠΉ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ (Π½Π° Raspberry Pi 4 ΠΎΠΊΠ½ΠΎ ΠΎΡΠΊΡΡΠ»ΠΎΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄).
11. ΠΠ°ΠΏΡΠ°Π²ΡΡΠ΅ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ Π½Π° ΡΠ²ΠΎΠ΅ Π»ΠΈΡΠΎ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π΅Π», ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π»ΡΠΈ. Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΠΎ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 10 ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ Π²Π°ΡΠ΅Π³ΠΎ Π»ΠΈΡΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°ΠΊΡΡΡΠΎΠ² (ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΎΡΠΎ).
ΠΡΠ»ΠΈ Π²Ρ Π½ΠΎΡΠΈΡΠ΅ ΠΎΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΡ ΡΠΎΡΠΎ Ρ Π½ΠΈΠΌΠΈ ΠΈ Π±Π΅Π·. ΠΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ΅Π»ΡΠΈ Π² ΡΠ°ΠΏΠΊΠ΅. ΠΡΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΡΠΎΡΠΎΡΠ΅ΡΡΠΈΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Esc
.
12. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ²ΠΎΠΈ ΡΠΎΡΠΎ, Π·Π°ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ dataset, Π° ΠΏΠΎΡΠ»Π΅ Π² ΠΈΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ. ΠΠ²Π°ΠΆΠ΄Ρ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΡΠ½ΠΈΠΌΠΎΠΊ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°. ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠΎΡΠΎ, ΠΊΠ»ΠΈΠΊΠ°Ρ ΠΏΠΎ ΡΡΡΠ΅Π»ΠΊΠ΅ Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
13. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡΡ 5-10, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠ΅ΠΌΡΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ·Π΅ΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , Π²ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
14. Π Π½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² facial_recognition, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
cd facial_recognition
ΠΠ° Π°Π½Π°Π»ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π² Π΄Π°ΡΠ°ΡΠ΅ΡΠ΅ ΡΡ
ΠΎΠ΄ΠΈΡ 3-4 ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΈΠ· 20 ΡΠΎΡΠΎ, 1,5 ΠΌΠΈΠ½ΡΡΡ ΡΠΉΠ΄Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Pi ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΡΠ½ΠΈΠΌΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π» ΡΠ°ΠΉΠ» encodings.pickle
.
15. ΠΠ»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python train_model.py
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΡΡΠΊΠΎΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ imutils ΠΈΠ»ΠΈ face-recognition ΠΎΡΡΡΡΡΡΠ²ΡΡΡ, ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pip2
Π²ΠΌΠ΅ΡΡΠΎ pip
(ΡΠ°ΡΡΡ 1, ΠΏΡΠ½ΠΊΡΡ 5-6).
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ ΠΊΠΎΠ΄Ρ (train_model.py)
- ΠΠ°ΡΠ°ΡΠ΅Ρ:
train_model.py
Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΎΡΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ dataset. Π Π°Π·Π±Π΅ΠΉΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π½ΡΡΡΠΈ ΠΏΠ°ΠΏΠΊΠΈ dataset ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ Paul ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π²ΡΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Ρ Π»ΠΈΡΠΎΠΌ Paul Π² Π½Π΅Π΅; - ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
train_model.py
ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»encodings.pickle
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π»ΠΈΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°Π³Π°; - ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ: ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ HOG (Π°Π½Π³Π». Histogram of Oriented Gradients) β Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ.
16. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠ°, Π²Π²Π΅Π΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python facial_req.py
ΠΠ΅Π±-ΠΊΠ°ΠΌΠ΅ΡΠ° ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄. ΠΠ°Π²Π΅Π΄ΠΈΡΠ΅ Π΅Π΅ Π½Π° ΡΠ²ΠΎΠ΅ Π»ΠΈΡΠΎ. ΠΡΠ»ΠΈ Π²ΠΎΠΊΡΡΠ³ Π½Π΅Π³ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΆΠ΅Π»ΡΠ°Ρ ΡΠ°ΠΌΠΊΠ° Ρ Π²Π°ΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΡΠ΅Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π²Π°ΡΠ΅ Π»ΠΈΡΠΎ.
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ! Π£ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π°ΡΡΠΈΡΡ Raspberry Pi ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ Π²Π°ΡΠ΅ Π»ΠΈΡΠΎ.
ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΊΠΎΠ³ΠΎ-ΡΠΎ, Π΄Π°ΠΉΡΠ΅ ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠ»Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΆΠΌΠΈΡΠ΅ q
.
Π§Π°ΡΡΡ 3: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π½Π° Raspberry Pi
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎ email Π² Π½Π°Ρ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Python. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ΄Π½ΡΠ΅ ΠΈ Π΄ΡΡΠ·ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ Π΄ΠΎΠΌΡ.
Π― Π²ΡΠ±ΡΠ°Π» Mailgun ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΡ; Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²Π°ΠΌ email-ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π½Π° Mailgun Π½ΡΠΆΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ°Ρ ΠΊΡΠ΅Π΄ΠΈΡΠ½Π°Ρ ΠΊΠ°ΡΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ Mailgun.
1. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° mailgun.com Π² Π²Π°ΡΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅;
2. ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ Π² Mailgun;
3. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π²Π°Ρ Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° API, ΠΏΠΎΡΠΎΠΌ Π½Π° Python, ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΊΡΡΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ API;
4. ΠΡΠΊΡΠΎΠΉΡΠ΅ send_test_email.py
Π² Thonny ΠΈΠ»ΠΈ Geany Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅, Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ facial_recognition;
5. Π ΡΡΡΠΎΠΊΠ΅ 9,"https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages", Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ βYOUR_DOMAIN_NAMEβ Π½Π° ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°;
6. Π ΡΡΡΠΎΠΊΠ΅ 10, Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ "YOUR_API_KEY" Π½Π° Π²Π°Ρ ΠΊΠ»ΡΡ API Π² Mailgun;
7. Π ΡΡΡΠΎΠΊΠ΅ 12, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²Π°Ρ email Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Mailgun;
8. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄ send_test_email.py
. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 200 ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ βMessage: Queuedβ (Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: Π ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ), ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ email.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ°, Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠΉΡΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ (ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠΏΠ°ΠΌ).
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ email Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ Π² Mailgun Π² Π³ΡΠ°ΡΡ Authorized Recipients (Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ). ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° ΠΏΠΎΡΡΠ΅.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Email-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ
9. ΠΡΠΊΡΠΎΠΉΡΠ΅ facial_req_email.py
Π² Thonny ΠΈΠ»ΠΈ Geany Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅, Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ facial_recognition;
10. Π ΡΡΡΠΎΠΊΠ΅ 9, "https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages", Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ βYOUR_DOMAIN_NAMEβ Π½Π° ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°;
11. Π ΡΡΡΠΎΠΊΠ΅ 10, Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ "YOUR_API_KEY" Π½Π° Π²Π°Ρ ΠΊΠ»ΡΡ API Π² Mailgun;
12. Π ΡΡΡΠΎΠΊΠ΅ 12, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ email-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ Mailgun Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°;
13. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² facial_req_email.py
;
14. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅:
python facial_req_email.py
ΠΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·, ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ. ΠΠ°Π²Π΅Π΄ΠΈΡΠ΅ Π΅Π΅ Π½Π° ΡΠ²ΠΎΠ΅ Π»ΠΈΡΠΎ. ΠΡΠ»ΠΈ Π»ΠΈΡΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΎ ΠΆΠ΅Π»ΡΠΎΠΉ ΡΠ°ΠΌΠΊΠΎΠΉ Ρ Π²Π°ΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ Π»ΠΈΡΠ°.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΈΠ΄Π΅Ρ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ, Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠ΄Π΅Ρ βTake a pictureβ (Π‘Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠΎ) (Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΠ° Π΄Π΅Π»Π°Π΅Ρ ΡΠ½ΠΈΠΌΠΎΠΊ), Π° Π·Π°ΡΠ΅ΠΌ βStatus Code: 200β, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΡΡΡ ΡΠ½ΠΎΠ²Π°, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΈΡΡΠΌΠΎ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ Π΅Π³ΠΎ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ ΠΊΠΎΠ΄Ρ (facial_req_email.py):
- ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π»ΠΈΡΠ°;
- 7-Π΄ΡΠΉΠΌΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½ Raspberry Pi Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΊ ΠΌΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ Π²Π°ΡΠ΅ΠΉ USB Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Raspberry Pi Π²ΠΌΠ΅ΡΡΠΎ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ
ΠΠ°ΠΉΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΠ΅Π· USB Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ. ΠΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ Pi, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² facial_req.py
.
1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Raspberry Pi. ΠΠ°ΠΆΠΌΠΈΡΠ΅ OK ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Pi ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install picamera[array]
3. Π Π§Π°ΡΡΠΈ 2, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° headshots.py
Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» headshots_picam.py
:
python headshots_picam.py
4. ΠΠ°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
facial_req.py
ΠΈ facial_req_email.py
:
vs = VideoStream(src=0).start()
ΠΈ ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅
vs = VideoStream(usePiCamera=True).start()t
5. Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΡΠ΄Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ Π½Π° Raspberry Pi
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ»Π΅Π½ΠΎΠ² ΡΠ΅ΠΌΡΠΈ ΠΈ Π΄ΡΡΠ·Π΅ΠΉ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π½Π° Π²Π°ΡΠ΅ΠΌ Pi. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π³ΠΎΡΠΎΠ²Ρ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ headshots.py, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΡ ΡΠΎΡΠΎ Π² Raspberry Pi. ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π»ΠΈΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΡ ΠΈΡ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ.