Raspberry Pi を休止してAndroidの勉強してたらスマホが壊れた。ということで、Raspberry Piの勉強を再開しようと思い再設定中。久々に電源入れたら、なんか調子が悪い。再インストールから開始。とはいうものの、特に興味がある分野がないから、Pythonの勉強でもするつもり。

Raspbery Pi 3 で Python3環境にOpenCV3を突っ込んでみる

これらは、Google+でチョコチョコ書いた内容をまとめただけ。

 

Raspberry Pi 3 のPythonのバージョン

>>> import platform
>>> platform.python_version()
'3.5.3'

 

>>> import cv2
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
import cv2
ImportError: No module named 'cv2'

 

当然入ってない。

コマンドプロンプトからpip3でinstallする。

$ sudo pip3 install opencv-python
Collecting opencv-python
Downloading https://www.piwheels.org/simple/opencv-python/opencv_python-3.4.1.15-cp35-cp35m-linux_armv7l.whl (7.5MB)
100% |████████████████████████████████| 7.5MB 16kB/s
Requirement already satisfied: numpy>=1.12.1 in /usr/lib/python3/dist-packages (from opencv-python)
Installing collected packages: opencv-python
Successfully installed opencv-python-3.4.1.15

>>> import cv2
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cv2
File "/usr/local/lib/python3.5/dist-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: libcblas.so.3: cannot open shared object file: No such file or directory

ライブラリが足りない。

 

apt-cache searchなどで探す。そして、libcblas3 libjasper1 libqt4-testをインストール。芋づる式にいろいろインストール。

$ sudo apt-get install libcblas3 libjasper1 libqt4-test

(略)

 

>>> import cv2
>>> cv2.__version__
'3.4.1'

これで、Python3+OpenCV3の環境の出来上がり。

 

picameraを使って静止画の取り込み。

----ここから----

import cv2
import picamera
import numpy

camera = picamera.PiCamera()
image = numpy.empty(camera.resolution.width * camera.resolution.height * 3, dtype=numpy.uint8)
camera.capture(image, 'bgr')
image = image.reshape( (camera.resolution.height, camera.resolution.width, 3) )
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

----ここまで----

 

picameraを使って動画表示

----ここから----

import cv2
import picamera
import numpy

camera = picamera.PiCamera()
image = numpy.empty(camera.resolution.width * camera.resolution.height * 3, dtype=numpy.uint8)
while (True):
    camera.capture(image, 'bgr')
    image = image.reshape( (camera.resolution.height, camera.resolution.width, 3) )
    cv2.imshow("image", image)
    if cv2.waitKey(1) >= 1 :
        break;
cv2.destroyAllWindows()

----ここまで----

後は、適当に遊びます。

Raspberry Pi 3の感想など

約1ヶ月 Raspberry Pi 3で遊んでみた。カメラモジュールや3inchモニタもつけてみた。ネットにはたくさん情報がある。だから、そんなに困らない。ただ、情報には鮮度があるようで、新しく更新された情報が新しいわけではなく、古い情報を使っている場合もあるので、試行錯誤は必要になるかな?

 

Raspberry Pi 3 で遊ぶという観点で、Linux From Scratchを試してみた。

PiLFS - Linux From Scratch on the Raspberry Pi

多少嵌るところはあるかもしれないけど、Linux From Scratchの日本語ドキュメントとPiLFSのサイトの情報を丁寧に読めば大丈夫。しかし、PiLFSはSVN形式でRaspbianのsystemdとは異なるから、勉強にはなるけど使わなくなるかな。時間もかかるし、発熱も心配なぐらいだから、一通りLinuxの起動やファイルシステムや開発環境を理解するために一度やれば十分だと思う。

 

開発はPython中心。でも、Python 2が主流かな。UIもRaspbianなLXDEなので、gtk+2になると思う。枯れた技術を学ぶには良いかもしれない。私はできるだけ最新を選びたいので、Pythonで遊ぶ。情報量は減るが、以外に最新情報が多い気がする。

 

さて、これ以降は、自分のための設定内容です。2018/5/27現在の内容だから、しばらくすると古い内容になる可能性が高い。

 

母艦として、Windows7を利用している。DiskImageを書くには、

https://sourceforge.net/projects/win32diskimager/

Raspbianは本家から。

Download Raspbian for Raspberry Pi

SSH

PuTTY-ranvis - Ranvis software

VNC

Download VNC Viewer | VNC Connect

ファイル共有はWinSCPを使う

WinSCP プロジェクト日本語トップページ - OSDN

これだけあれば、基本的な問題はない。

 

一度だけHDMI経由でモニタにつなぎ、キーボードとマウスを接続して起動。Desktopが起動したら、メニューで設定を選ぶか、

$ sudo rc_gui

で設定画面を起動。Interface でssh vncを有効にする。localizationなども日本語にしておけば楽かも。vncさえあれば、後はWindowsから何とかまる。

 

日本語入力のために、fxict-mozcを入れる。これは、開発が止まっているみたい。まあ、使えるからいいか。

Fcitx - Fcitx

$ sudo apt-get install fcitx-mozc

 

文字化けするのでIPAフォント群を入れる。

IPAフォント:IPA 独立行政法人 情報処理推進機構

$ sudo apt-get install fonts-ipafont

 

後は、最新状態にする。

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get dist-upgrade

$ sudo rpi-update

$ sudo apt autoremove

これで、基本的な設定は完了。

raspbianのpython-opencv

raspbianのpython-opencvはPython2対応だった。調べてみると、busterっていうDebianの開発版にはpython3-opencvがあるけど、jessieっていう安定版にはないみたい。WindowsとRaspbianで同じ環境にしようと思ったが、そう簡単ではないみたい。

 

まあ、python2とpython3の違いすら分からないから、普通の使い方を勉強するところから始める予定。Qtウィジェットも初めて触るから慣れるまではしょうがないね。

WindowsでPython OpenCVをpipで入れてみた

よく分からないけど、コマンドプロンプトでpipを使ってみる。

 

>pip install opencv_python
Collecting opencv_python
Downloading https://files.pythonhosted.org/packages/4c/25/151aeb11e80f99b97d3e
b93a2c98bcacd857f28c4fb8865eb0201d800e97/opencv_python-3.4.0.12-cp36-cp36m-win_a
md64.whl (33.3MB)
100% |████████████████████████████████| 33.4MB 463kB/s
Collecting numpy>=1.11.3 (from opencv_python)
Downloading https://files.pythonhosted.org/packages/af/e4/7d7107bdfb5c33f6cf33
cdafea8c27d1209cf0068a6e3e3d3342be6f3578/numpy-1.14.3-cp36-none-win_amd64.whl (1
3.4MB)
100% |████████████████████████████████| 13.4MB 2.4MB/s
Installing collected packages: numpy, opencv-python
Successfully installed numpy-1.14.3 opencv-python-3.4.0.12

 

opencv-pythonとnumpyってのがインストールされた。Pythonコンソールで確認。

 

>>> import cv2
>>> cv2.__version__
'3.4.0'

 

大丈夫みたい。適当な画像を作って読み込んでみた。

 

>>> img = cv2.imread('C:\\test.jpg')
>>> print(img)
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]

[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]

[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]

...

[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]

[[254 254 254]
[254 254 254]
[254 254 254]
...
[254 254 254]
[254 254 254]
[254 254 254]]

[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]]
>>>

 どうやら、使えるらしい。

PyQt5 in Windows 7

Raspberry Piでいろいろやってみて、やりたいことを簡単にするに、OS 開発言語 Widgetを考えてみた。RaspBian + Python + Qtがヒットしたので、Windowsでもその環境を準備。


・OS; RaspBian
https://www.raspberrypi.org/downloads/raspbian/
・言語:Python
https://www.python.org/downloads/windows/
GUIWidget:Qt
https://www.qt.io/download
(Google ChromだとDownloadボタンが出なかったので、Internet Explorerでダウンロード)
という環境にしてみました。
# RedHat系、C言語Gtkを使ってなかったっけ?という突っ込みは無しで。5年離れたら、世界は変わってます。


Pythonは後でコマンドプロンプトから実行するため、PATHを設定したほうが便利です。
# このため、一度UnInstallして、インストーラーの最初でPATHを設定しなおした。


とりあえず、コマンドプロンプトを起動し、Pythonが動くことを確認。


>python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()


Pythonのモジュールのバージョン管理はpipを使うらしいので、インストールされているか確認。


>python -m pip -V
pip 9.0.3 from C:\Users\user_name\AppData\Local\Programs\Python\Python36\lib\site-packages (python 3.6)


pipのfreezeコマンドでバージョン確認???


>python -m pip freeze
You are using pip version 9.0.3, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.


バージョンアップしてみる。
>python -m pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b
44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB)

100% |████████████████████████████████| 1.3MB 660kB/s
Installing collected packages: pip
Found existing installation: pip 9.0.3
Uninstalling pip-9.0.3:
Successfully uninstalled pip-9.0.3
Successfully installed pip-10.0.1


pyqt5をインストールする。
>python -m pip install pyqt5
Collecting pyqt5
Downloading https://files.pythonhosted.org/packages/a7/22/67cc2bac6ae2cd3a7eab
b2a2e91638b94bdc6e0503747e49670ce44bb5b0/PyQt5-5.10.1-5.10.1-cp35.cp36.cp37.cp38

  • none-win_amd64.whl (81.0MB)

100% |████████████████████████████████| 81.0MB 60kB/s
Collecting sip<4.20,>=4.19.4 (from pyqt5)
Downloading https://files.pythonhosted.org/packages/30/fa/90ea79d7b6b21a50e16d
2e1214bd4d45390ee1b5393dc09c3785a3dc9c7e/sip-4.19.8-cp36-none-win_amd64.whl (51k
B)
100% |████████████████████████████████| 51kB 2.3MB/s
Installing collected packages: sip, pyqt5
The scripts pylupdate5.exe, pyrcc5.exe and pyuic5.exe are installed in 'C:\Use
rs\futoshi\AppData\Local\Programs\Python\Python36\Scripts' which is not on PATH.

Consider adding this directory to PATH or, if you prefer to suppress this warn
ing, use --no-warn-script-location.
Successfully installed pyqt5-5.10.1 sip-4.19.8


なんか、インストールできた。
Python3.6のIDLEってのを起動して、ウィンドウを開いてみる。
>>> from PyQt5.QtWidgets import QApplication, QWidget
>>> app = QApplication(sys.argv)
>>> w = QWidget()
>>> w.resize(250,150)
>>> w.move(300, 300)
>>> w.setWindowTitle('Simple')
>>> w.show()
>>> sys.exit(app.exec_())


無事にウィンドウが開けた。Windows+Python+Qtのプログラム環境完成。しばらく勉強してみる予定。

Raspberry Pi 3のFedora Minimal で 27から28にしようとしたら失敗した

PCと同じ方法で、Raspberry Pi 3の Fedora MinimalをUpgradeしてみたら、失敗してmicroSDを壊してしまった。単純に動きが止まったから電源を切ってmicroSDを抜いたつもりだったのに。。。

やったことは、

# dnf-install fedora-upgrade
# dnf system-upgrade --releasever=28 download
# dnf system-upgrade reboot

このrebootで再起動後しばらくしてモニタが消え、LEDの赤点灯のみになったので電源を切った。そして、起動すると動かない。Linuxで復活させようと、もう一度Fedora27のイメージを書き込んでたら止まった。microSDを抜いて、もう一度差し込んで、/dev/sdcのマウントで失敗。fdiskでブロックが読み込めないことを確認。mkfsもだめ。当然Windowsのformatもだめ。

これ、多分system-upgradeに失敗したというより、microSDの寿命が原因だと思います。4年前に購入した32GBで、いろいろ使ってたからしょうがないです。