Author Archives: chen

RPi:SSHでリモート作業

Published by:

現在のIPアドレスの確認

まず、現在のIPアドレスを調べてください。

$ ifconfig

Wi-Fi接続が完了すると、MacとRaspberryPiは、Wi-Fi経由で接続できます。 まずpingコマンドでネットの接続を確認してください。

$ ping 192.168.0.110
PING 192.168.0.110 (192.168.0.110): 56 data bytes
64 bytes from 192.168.0.110: icmp_seq=0 ttl=64 time=18.073 ms
64 bytes from 192.168.0.110: icmp_seq=1 ttl=64 time=6.089 ms

接続は確認したら、リモートログインへ進んでください。

標準RaspberryPiの SSHを有効化

Raspberry Pi は、デフォルトでSSHはが無効になっています。 有効にするにはraspi-configで設定する必要があるのですが、/bootにsshという名前のファイルを置くだけでも有効にできます。

/bootのパーティションは、Macに接続しただけで, そのままアクセス可能ですので、touchでSSHを有効化できます。

ただし、/boot/sshは、raspi-configで設定されていない場合だけ使用可能です。raspi-configでSSHを無効化した場合は、/boot/sshが存在しても、SSHは有効になりません。

MacOSからリモートログイン

ユーザpiをipのサーバにログインとする。
$ ssh pi@ip

例:

chen@Hong-Mac-mini workspace % ssh pi@192.168.86.140
The authenticity of host '192.168.86.140 (192.168.86.140)' can't be established.
ECDSA key fingerprint is SHA256:9aiGsOD5AIkArHq+ghDIlPUnUi/3zM57WeMmxtCVa+I.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.86.140' (ECDSA) to the list of known hosts.
pi@192.168.86.140's password:
Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l

 

初回ログインする際、fingerprintの確認があります。

一度接続すると、fingerprint記録されるので、次回は確認しなくなる。

同じIPで過去ログインしたPiサーバの中身が入れ替わり、ログインが拒否される。その場合、~.ssh/know_hostに該当する(fingerprintを含めた)項目を削除してください。

 

Windowsからからリモートログイン

Windowsの場合puttyなどターミナルツールを予めインストールしてください。

https://www.putty.org/

putty.exe を起動すると PuTTY 設定 のウィンドウが現れます.
ここで Pi の IP アドレスを入力し, プロトコルに ssh を選択します.

 

RPi : CNNで深層学習

Published by:

近年、画像分類技術の精度向上には目覚ましいものがあります。深層学習と呼ばれるニューラルネットワークを進化させた技術を画像分類に適用することにより、人間と同程度かそれ以上の高精度を実現できるようになりました。
そのような深層学習モデルの中でも、「畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)」は、視覚野の特徴抽出の仕組みをモデル化したもので、画像解析において高い性能を発揮してきました。
集めた画像を CNNで解析
models/faceがない???
(env) pi@donkeypi3chen02:~/hello_ghome $ mkdir models/face
./dataset
|
|- dataA
|   |- image1a.jpg
|   |- image2a.jpg
|   |- image3a.jpg
|   |-       ・
|   |-       ・
|
|- dataB
|   |- image1b.jpg
|   |- image2b.jpg
|   |-       ・
|   |-       ・
|
沢山フォルダ作った。。。
(env) pi@donkeypi3chen02:~/hello_ghome $ python3 cnn/train.py
WARNING:tensorflow:From /home/pi/env/lib/python3.7/site-packages/tensorflow/__init__.py:98: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.
WARNING:tensorflow:From /home/pi/env/lib/python3.7/site-packages/tensorflow/__init__.py:98: The name tf.AttrValue is deprecated. Please use tf.compat.v1.AttrValue instead.
WARNING:tensorflow:From /home/pi/env/lib/python3.7/site-packages/tensorflow/__init__.py:98: The name tf.COMPILER_VERSION is deprecated. Please use tf.version.COMPILER_VERSION instead.
WARNING:tensorflow:From /home/pi/env/lib/python3.7/site-packages/tensorflow/__init__.py:98: The name tf.CXX11_ABI_FLAG is deprecated. Please use tf.sysconfig.CXX11_ABI_FLAG instead.
WARNING:tensorflow:From /home/pi/env/lib/python3.7/site-packages/tensorflow/__init__.py:98: The name tf.ConditionalAccumulator is deprecated. Please use tf.compat.v1.ConditionalAccumulator instead.
Traceback (most recent call last):
  File “cnn/train.py”, line 17, in <module>
    train_image ,train_label , test_image , test_label = image_dataset.make( img_path, train_num = 90 , test_num = 10 , img_size = IMG_SIZE )
  File “./cnn/util/image_dataset.py”, line 96, in make
    test_image.extend( test[0] )
IndexError: list index out of range
(env) pi@donkeypi3chen02:~/hello_ghome $
やり方間違っているかな?

RPi : 顔画像の自動収集

Published by:

 

ソースコードの取得

pi@raspberrypi:~ $ git clone https://github.com/sey323/hello_ghome
Cloning into ‘hello_ghome’…
remote: Enumerating objects: 23, done.
remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 23
Unpacking objects: 100% (23/23), done.
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cd hello_ghome/
pi@raspberrypi:~/hello_ghome $

顔画像の収集

OpenCVには顔認識用のライブラリがあらかじめ用意されており,そちらを利用するだけで簡単に顔画像を収集できる.

それを利用してWebカメラから撮影した画像から,顔領域で切り抜きを行い,保存をするプログラムを作成し画像を収集した.

コード実行してみる

pi@raspberrypi:~/hello_ghome $ mkdir img
pi@raspberrypi:~/hello_ghome $ python3 face_camera/camera.py img/
Traceback (most recent call last):
  File “face_camera/camera.py”, line 38, in <module>
    main(save_path)
  File “face_camera/camera.py”, line 26, in main
    camera_facedetect(save_path)
  File “face_camera/camera.py”, line 16, in camera_facedetect
    face_list = detector.face_detect( image )
  File “/home/pi/hello_ghome/face_camera/detector.py”, line 18, in face_detect
    facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
cv2.error: OpenCV(4.1.1) /home/pi/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘detectMultiScale’
エラーに出会いました!!!

* 原因

調べてみたら、カスケードファイルのパスが異なることで起こっているエラーのようです。

* 解決策

pi@raspberrypi:~/hello_ghome $ vi face_camera/detector.py
プログラムに、haarcascadeファイル場所をみる、ありませんね。
pi@raspberrypi:~/hello_ghome $ ll /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml
ls: cannot access ‘/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml’: No such file or directory

haarcascadeファイルの場所を確認。

pi@raspberrypi:~/hello_ghome $ locate haarcas
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_eye.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_eye_tree_eyeglasses.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalcatface.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalcatface_extended.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalface_alt.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalface_alt2.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalface_alt_tree.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_frontalface_default.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_fullbody.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_lefteye_2splits.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_licence_plate_rus_16stages.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_lowerbody.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_profileface.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_righteye_2splits.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_russian_plate_number.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_smile.xml
/usr/local/lib/python3.7/dist-packages/cv2/data/haarcascade_upperbody.xml
/usr/share/gst-plugins-bad/1.0/opencv_haarcascades
/usr/share/gst-plugins-bad/1.0/opencv_haarcascades/fist.xml
/usr/share/gst-plugins-bad/1.0/opencv_haarcascades/palm.xml
pi@raspberrypi:~/hello_ghome $

ファイルリンクしてみる

pi@raspberrypi:~/hello_ghome $ sudo mkdir /usr/local/share/OpenCV
pi@raspberrypi:~/hello_ghome $ cd /usr/local/share/OpenCV
pi@raspberrypi:/usr/local/share/OpenCV $ sudo ln -s /usr/local/lib/python3.7/dist-packages/cv2/data haarcascades
pi@raspberrypi:/usr/local/share/OpenCV $ ll
total 0
lrwxrwxrwx 1 root root 47 Jul 3 00:26 haarcascades -> /usr/local/lib/python3.7/dist-packages/cv2/data

再度, 同じコマンドでファイル確認できた。

pi@raspberrypi:/usr/local/share/OpenCV $ ll /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml
-rw-r–r– 1 root staff 676709 Jul 2 15:37 /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml

再度Webカメラから撮影した画像から,顔領域で切り抜きのコードを実行
pi@raspberrypi:~/hello_ghome $ python3 face_camera/camera.py img/
img//2020-07-03-003242_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003243_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003244_0.jpgis clip and saved!
img//2020-07-03-003245_0.jpgis clip and saved!
img//2020-07-03-003245_0.jpgis clip and saved!
img//2020-07-03-003248_0.jpgis clip and saved!
顔検出するたび、保存できた。

参考

RaspberryPi+GoogleHome+Webカメラで顔認識でお出迎えしてくれるGoogleHomeを構築する

RPi:VNCでリモート作業

Published by:

できれば手元のMacから、Raspberry Piのデスクトップ画面をマウスとかトラックパッドで操作できたら便利。
というわけで、今回はVNCを使ったリモートデスクトップ接続にチャレンジしていきます!

MacのFinderからVNC接続

MacのFinderからVNCで接続するには
  1. 起動方法は簡単です。 Finderを起動して、メニューバーの「移動」ー「サーバへ接続」を選択します。 …
  2. サーバアドレスには「vpn://220.99.0.xx:ポート番号」の書式で入力します。 …
    例:vnc://192.168.86.140:5901
  3. 認証画面が表示されますので、VNCサーバで指定しているパスワードを入力します。

もし、接続できない場合、VNCの最新プロトコルに対応してない可能性があるので、次のRealVNCを利用した接続を試しましょう。

RealVNCを利用した接続

Raspberry Pi に毎回 HDMI・キーボ・マウスをつなぐのが面倒、SSHはまた慣れてない、MacとかからGUIで触れるようにしたい。その場合RealVNCを利用という選択肢があります。

Raspbian OSにはVNCサーバ(RealVNC)が組み込まれていますが、既定では無効になっています。

 

VNCビューアのインストール

RealVNCと互換性のあるVNCクライアントアプリを用意してください。

(macOSの場合、VNCクライアントなくでも、Finderから利用できます。)

Download VNC Viewer to the device

使用しているPCがMacの場合は、上記サイトを開いてから [macOS] アイコンをクリックしてください。
その後、画面中央の [DOWNLOAD VNC VIEWER]をクリックしてインストールイメージ(dmgファイル)をダウンロードします。

VNCビューアの起動

インストールされた「VNC Viewer」を起動します。
初期起動画面が表示されるので、そのまま[GOT IT]ボタンをクリックします。

ビューア画面が表示されたら、アドレス入力欄に Raspberry Pi のIPアドレスを入力して [enter]キーを押下します。

ログインユーザ名とパスワードを入力して [OK]ボタンをクリックします。

 

Piのサーバ設定

VNCを有効にする

最初からデスクトップ版のイメージでSDカードを作成した場合、VNCもインストールされ、これを有効化すればVNCクライアントから接続できるようになります。

Raspberry Pi を起動してデスクトップ画面が表示されたら、メニューバー左端のラズベリーアイコンをクリックします。
表示されたプルダウンメニューから [設定]-[Raspberry Piの設定]をクリックします。

「Raspberry Piの設定」画面で「インタフェース」タブをクリックし、[VNC]の「有効」を選択してから[OK]ボタンをクリックします。

VNCをインストール

次は、Piのターミナル版からインストールするので、たくさんのパッケージが必要だが、最初からデスクトップ版のイメージでSDカードを作成した場合不要。
(env) pi@donkeypi3chen02:~ $ sudo apt-get install tightvncserver
(env) pi@donkeypi3chen02:~ $ tightvncserver
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = “ja_JP.utf8”
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
You will require a password to access your desktops.
Password:
Warning: password truncated to the length of 8.
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Password too short
xauth:  file /home/pi/.Xauthority does not exist
New ‘X’ desktop is donkeypi3chen02:1
Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/donkeypi3chen02:1.log
今度、さらにxserver-xorg必要
(env) pi@donkeypi3chen02:~ $
sudo apt-get install –no-install-recommends xserver-xorg
sudo apt-get install –no-install-recommends xinit
sudo apt-get install raspberrypi-ui-mods

Ref:

GUIDE: Raspbian Lite with RPD/LXDE/XFCE/MATE/i3/Openbox/X11 GUI

RPi:Install Open CV

Published by:

システムを最新版に更新

以下のコマンドを実行して、最新版に更新します。
pi@raspberrypi:~ $ sudo apt-get update
Get:1 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]
Get:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
Get:3 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB]
Get:4 http://archive.raspberrypi.org/debian buster/main armhf Packages [330 kB]
Get:5 http://raspbian.raspberrypi.org/raspbian buster/non-free armhf Packages [104 kB]
Fetched 13.5 MB in 11s (1,246 kB/s)
Reading package lists… Done
pi@raspberrypi:~ $ sudo apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following package was automatically installed and is no longer required:
rpi-eeprom-images
Use ‘sudo apt autoremove’ to remove it.
The following packages will be upgraded:
arandr ca-certificates firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek libfm-data libfm-extra4
libfm-gtk-data libfm-gtk4 libfm-modules libfm4 libgnutls30 libnode-dev libnode64 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc
libraspberrypi0 libvlc-bin libvlc5 libvlccore9 lxpanel lxpanel-data nodejs nodejs-doc pcmanfm pi-greeter pi-package pi-package-data
pi-package-session piclone pipanel piwiz raspberrypi-bootloader raspberrypi-kernel raspberrypi-ui-mods raspi-config rp-bookshelf rp-prefapps
rpi-chromium-mods rpi-eeprom rpi-eeprom-images scratch2 vlc vlc-bin vlc-data vlc-l10n vlc-plugin-base vlc-plugin-notify vlc-plugin-qt
vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-output vlc-plugin-video-splitter vlc-plugin-visualization
57 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 225 MB of archives.
After this operation, 7,697 kB disk space will be freed.
Do you want to continue? [Y/n] y
。。。

Processing triggers for ca-certificates (20200601~deb10u1) …
Updating certificates in /etc/ssl/certs…
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…

done.
done.
Processing triggers for libvlc-bin:armhf (3.0.11-0+deb10u1+rpt1) …
pi@raspberrypi:~ $

 

opencvインストール

opencvインストールしてみる。
(env) pi@donkeypi3chen02:~ $ sudo pip3 install opencv-python
Collecting opencv-python

Downloading https://www.piwheels.org/simple/opencv-python/opencv_python-4.1.1.26-cp37-cp37m-linux_armv7l.whl (10.0MB)

100% |████████████████████████████████| 10.0MB 45kB/s

Requirement already satisfied: numpy>=1.16.2 in /usr/lib/python3/dist-packages (from opencv-python) (1.16.2)

Installing collected packages: opencv-python

Successfully installed opencv-python-4.1.1.26

必要なライブラリが足りないと、プログラム中エラーになるので、不足のライブラリを一気に追加する。

$ sudo apt-get install libjasper-dev

$ sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig libqt4-test

$ sudo apt-get install libatlas-base-dev

opencvで動作確認

Pythonからopencvの動作確認する。
(env) pi@donkeypi3chen02:~ $ python3
Python 3.7.3 (default, Apr  3 2019, 05:39:12)
[GCC 8.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import cv2
Traceback (most recent call last):
  File “<stdin>”, line 1, in <module>
  File “/usr/local/lib/python3.7/dist-packages/cv2/__init__.py”, line 3, in <module>
    from .cv2 import *
ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8
>>>
ネットで調べて、次の処置で通りました。
.bashrcに、export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 #この一文を追加
(env) pi@donkeypi3chen02:~ $ vi .bashrc
(env) pi@donkeypi3chen02:~ $ source .bashrc
ここまで苦労して、ついにopencvの動作確認できた。
(env) pi@donkeypi3chen02:~ $ python3
Python 3.7.3 (default, Apr  3 2019, 05:39:12)
[GCC 8.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import cv2
>>> cv2.__version__
‘4.1.1’
>>>
ここまで、成功

参考

  • https://creepfablic.site/2020/04/10/python-opencv-error/ 

RPi:カメラの利用

Published by:

USBカメラの利用

USBカメラ挿入、dmesgコマンドで、次のメッセージが追加されていることを確認。
[ 3290.950364] usb 1-1.5: new high-speed USB device number 5 using dwc_otg
[ 3291.100866] usb 1-1.5: New USB device found, idVendor=056e, idProduct=7009, bcdDevice= 1.00
[ 3291.100880] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3291.100889] usb 1-1.5: Product: UCAM-DLD200BA
[ 3291.100899] usb 1-1.5: Manufacturer: Novatek
[ 3291.175879] uvcvideo: Found UVC 1.00 device UCAM-DLD200BA (056e:7009)
[ 3291.241082] uvcvideo 1-1.5:1.0: Entity type for entity Extension 5 was not initialized!
[ 3291.241098] uvcvideo 1-1.5:1.0: Entity type for entity Processing 4 was not initialized!
[ 3291.241110] uvcvideo 1-1.5:1.0: Entity type for entity Selector 3 was not initialized!
[ 3291.241121] uvcvideo 1-1.5:1.0: Entity type for entity Camera 1 was not initialized!
[ 3291.241519] input: UCAM-DLD200BA: UCAM-DLD200BA as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input6
[ 3291.241912] usbcore: registered new interface driver uvcvideo
[ 3291.241918] USB Video Class driver (1.1.1)
[ 3291.321345] usbcore: registered new interface driver snd-usb-audio
(env) pi@donkeypi3chen02:~ $

USB デバイス一覧からも確認

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 056e:7009 Elecom Co., Ltd
Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $

デバイスのリストからも確認

(env) pi@donkeypi3chen02:~ $ ls /dev/video*
/dev/video0  /dev/video1  /dev/video10  /dev/video11  /dev/video12

ソフトでカメラの確認

guvcview

カメラの確認するソフトは色々ありますが、今回はguvcviewを使用してみました。

pi@raspberrypi:~ $ sudo apt-get install guvcview

VNCから、Piに接続し、メニューのからguvcviewを探して、起動してみてください。
起動するとエラーで何も表示しないからあせったが、再起動したら、見れるようになった。

fswebcam

raspberrypi公式サイトでは、fswebcamを利用している
pi@raspberrypi:~/hello_ghome $ sudo apt install fswebcam
pi@raspberrypi:~ $ cd Pictures/
こちらも
pi@raspberrypi:~/Pictures $ fswebcam image.jpg
— Opening /dev/video0…
Trying source module v4l2…
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384×288 to 352×288.
— Capturing frame…
Captured frame in 0.00 seconds.
— Processing captured image…
Writing JPEG image to ‘image.jpg’.
pi@raspberrypi:~/Pictures $

公式内蔵カメラの利用

続く

参考

  • https://www.raspberrypi.org/documentation/usage/webcams/
  • https://uepon.hatenadiary.com/entry/2017/01/22/170349 ーー RaspberryPiでUSB接続のWebカメラを使ってみる

RPi:SDカード作成

Published by:

Downloads

最新版の「Raspberry Pi OS」をダウンロードして下さい。

Downloads

Raspberry Piユーザーは、Windows、macOS、Ubuntuで利用可能な新しいRaspberry Pi Imagerをダウンロードして使用できるようになります。

 

このユーティリティは、メカニクスに導入したいくつかのショートカットのおかげで、使いやすく、非常に高速です。

(今まではEtcherを使い焼き込みます。 https://www.balena.io/etcher/

 

初めて起動する

初めて起動する場合、 RaspberryPi にできたSDカードを差し込み、下記のものを接続し、電源は最後に接続する。

  • USBキーボード
  • HDMIディスプレイ
  • 電源(5V、2.5A)

ディスプレイで RaspberryPi用イメージ の起動を確認する。

 

Raspberry Pi基本のセットアップ

Raspberry Pi基本のセットアップについて、Linux & Raspberry Piを参照してください。

次は機械学習に必要なセットアップ手順;

  • 「Hostname」に好きなホスト名
  • Change Passwordからパスワード変更
  • 「SSH」の「Enable」
  • 「Camera」の「Enable」
  • 「Set Locale」の「Japan」
  • 「Set Timezone」は「Japan」
  • 「Keyboard」は「Japanese」

OKをクリックすると「再起動」

次は、システムを最新状態に更新

 

1 sudo apt update
2 sudo apt upgrade

固定IPに

 

リモート作業がメインになるので、IPアドレスしょっちゅう変えじゃうと困りますね。

IPアドレスを固定することができる。まず現在のIPを調べる。

$ ifconfig

 

そのIP範囲に固定のIPアドレスを設定。

$ sudo vi /etc/dhcpcd.conf

interface wlan0
static ip_address=192.168.0.70/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

CV(3) Eye Mosaic

Published by:

検出領域にモザイク処理

検出した領域にモザイクをかけたりすることもできる。

Viでサンプルコードを作成

$ vi test3.py 

import cv2
  
face_cascade_path = '/usr/local/opt/opencv/share/'
                    'OpenCV/haarcascades/haarcascade_frontalface_default.xml'
eye_cascade_path = '/usr/local/opt/opencv/share/'
                   'OpenCV/haarcascades/haarcascade_eye.xml'

face_cascade = cv2.CascadeClassifier(face_cascade_path)
eye_cascade = cv2.CascadeClassifier(eye_cascade_path)

src = cv2.imread('data/src/lena_square.png')
src_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(src_gray)

ratio = 0.05

for x, y, w, h in faces:
    cv2.rectangle(src, (x, y), (x + w, y + h), (255, 0, 0), 2)
    face = src[y: y + h, x: x + w]
    face_gray = src_gray[y: y + h, x: x + w]
    eyes = eye_cascade.detectMultiScale(face_gray)
    for (ex, ey, ew, eh) in eyes:
        # cv2.rectangle(face, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
        eye = face[ey: ey + eh, ex: ex + ew]
        small = cv2.resize(eye, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST)
        face[ey: ey + eh, ex: ex + ew] = cv2.resize(small, (ew, eh), interpolation=cv2.INTER_NEAREST)

cv2.imwrite('data/dst/opencv_eye_detect_mosaic.jpg', src)

処理結果

$ python2 test3.py
[ INFO:0] Initialize OpenCL runtime…

$ ls -al data/dst/
total 512
drwxr-xr-x 4 chen staff 128 6 25 01:45 .
drwxr-xr-x 5 chen staff 160 6 20 00:50 ..
-rw-r–r–@ 1 chen staff 108333 6 25 01:51 opencv_eye_detect_mosaic.jpg
-rw-r–r–@ 1 chen staff 110477 6 25 01:07 opencv_face_detect_rectangle.jpg

ファイル data/dst/opencv_eye_detect_mosaic.jpg が作成されたことが確認した。

Basic Operators

Published by:

基本オペレータ


この節ではPythonで基本的な演算子を使う方法を説明します。

算術演算子

他のプログラミング言語と同じように、加算、減算、乗算、除算の演算子を数値と共に使用できます。

number = 1 + 2 * 3 / 4.0
print(number)

答えがどうなるかを予測してみてください。Pythonは操作の順番に従いますか?

利用可能な別の演算子は、除算の整数剰余を返すモジュロ(%)演算子です。配当率%divisor =剰余。

remainder = 11 % 3
print(remainder)

2つの乗算記号を使用すると、べき乗の関係になります。

squared = 7 ** 2
cubed = 2 ** 3
print(squared)
print(cubed)

文字列で演算子を使用する

Pythonは、加算演算子を使った文字列の連結をサポートしています。

helloworld = “hello” + ” ” + “world”
print(helloworld)

Pythonは、文字列を繰り返して連続する文字列を形成することもサポートしています。

lotsofhellos = “hello” * 10
print(lotsofhellos)

リストでの演算子の使用

リストは加算演算子で結合することができます。

even_numbers = [2,4,6,8]
odd_numbers = [1,3,5,7]
all_numbers = odd_numbers + even_numbers
print(all_numbers)

文字列の場合と同様に、Pythonは乗算演算子を使用して繰り返しシーケンスで新しいリストを作成することをサポートします。

print([1,2,3] * 3)

演習課題

この課題の目標は、x_listand という2つのリストを作成することです。y_listこれらのリストには、それぞれ変数xandの10個のインスタンスが含まれていますy。あなたはとも呼ばれるリストを作成するために必要とされているbig_list変数が含まれ、xそしてyあなたが作成した二つのリストを連結して、10回ずつ。

x = object()
y = object()

# TODO: change this code
x_list = [x]
y_list = [y]
big_list = []

print("x_list contains %d objects" % len(x_list))
print("y_list contains %d objects" % len(y_list))
print("big_list contains %d objects" % len(big_list))

# testing code
if x_list.count(x) == 10 and y_list.count(y) == 10:
    print("Almost there...")
if big_list.count(x) == 10 and big_list.count(y) == 10:
    print("Great!")

 

Lists

Published by:

リスト


リストは配列と非常によく似ています。それらは任意のタイプの変数を含むことができ、それらはあなたが望むだけ多くの変数を含むことができます。リストは非常に簡単な方法で反復することもできます。これはリストを作成する方法の例です。

mylist = []
mylist.append(1)
mylist.append(2)
mylist.append(3)
print(mylist[0]) # prints 1
print(mylist[1]) # prints 2
print(mylist[2]) # prints 3

# prints out 1,2,3
for x in mylist:
    print(x)

 

存在しないインデックスにアクセスすると、例外(エラー)が発生します。

mylist = [1,2,3]
print(mylist[10])

 

課題

この課題では、 “append”リストメソッドを使って正しいリストに数字と文字列を追加する必要があります。「数」リストに数字1、2、および3を追加し、文字列変数に単語「hello」と「world」を追加する必要があります。

角かっこ演算子を使用して、変数second_nameに名前リストの2番目の名前を入力する必要もあります[]。インデックスは0から始まるので、リストの2番目の項目にアクセスする場合、そのインデックスは1になります。

参考

https://www.learnpython.org/en/Lists