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で、いろいろ使ってたからしょうがないです。

Fedora 28がリリースされていたのでバージョンアップしてみた

https://fedoramagazine.org/announcing-fedora-28/
5月1日だったみたいです。Raspberry pi と戯れていたので見逃しました。

さて、今回のバージョンアップ。いつもの fedup がなさそうなので、dnfで実行します。

$ sudo dnf system-upgrade --releasever 28 download

無事にダウンロードができたので、次は再起動します。

$ sudo dnf system-upgrade reboot

うまくいったら、続きを書きます。

一応、再起動で無事に起動したので記載します。
変更点はあまり良くわからないけど、メニューや表示が全部英語表記になってしまいました。

その他、gnome-terminalなど、基本となるアプリが起動しない。これは、設定をやり直さないとだめな感じですね。Ctrl+Alt+F2とかでも仮想端末開かないし、どうしたものか。ちょっと危険なので、しばらく様子をみたほうが良い感じです。

# 先ほど、Ctrl+Alt+F2で仮想端末からログインできました。原因追求は面倒だから、また今度。うまくいったという報告がどこかであったら試します。

Raspberry Pi 3で、Linux From Scratch その3

さて、昨日はch6-build.shを使わないなんて書きましたが、あまりに面倒なので、やり直しました。
まあ、ch6-build.shの最後に、ラズパイ用のソースなんかも展開してくれるスクリプトが入っていたので、やり直したほうが楽でした。
しかし、glibcMakefileの書き換えは後からmakeされると駄目になるので、

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install

の行を

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install || true
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install

のように書き換えて、実行して完了しました。make -k install でもOKかもしれませんが、その辺は識者に尋ねてください。

やり直すには、/tools をバックアップしていたtarから展開するだけでなく、/usr /bin /lib /sbin を削除して、もう一度ディレクトリの作成と重要なファイルとシンボリックリンクの作成を実施する必要があります。まあ、面倒だったけどやってみてください。

終わったら、デバッグシンボルの削除なんかやって終了。
次は、第7章に進みます。

で進む前に、
http://www.linuxfromscratch.org/lfs/downloads/stable/lfs-bootscripts-20170626.tar.bz2
http://intestinate.com/pilfs/scripts/pilfs-bootscripts-20170225.tar.xz
この二つをダウンロードしておいてください。

        • -

ここで、問題発覚。
日本語版のLFSはsystemd版だった。Pi LFS は SystemV なので、日本語マニュアルもそっちを見てください。ま、ここで気付いてよかった。/etc/groupと/etc/passwdの修正ぐらいかな?だめなら、また、やり直します。

          • -

ついでに、最後まで行きました。
自作カーネルでは起動しなかったけど、それは、RaspberryPiのconfigを知らないため。調べて作ればよしとしよう。
kernelは arch/arm/boot以下の zImage を /boot/kernel7.img という名前でコピーするだけで読み込んでくれます。まあ、起動してないからなんとも言えませんが。。。

ということで、ゴールデンウィークのお勉強も終了。今後は、今回初めて知った wpa_supplicant を調べようかなと思います。現在RaspberryPiは、3.5inchモニタつなげて「小さくて見えないよ〜」となってます。

Raspberry Pi 3で、Linux From Scratch その2

昨日、
./ch5-build.sh
で終了してましたが、無事にビルドできました。
今日は、Linux From Scratch 第6章からです。

必ず、ここで、/mnt/lfs/toolsをバックアップしてください。
ch6-build.shでエラーになると、もうね、どうにもなりません。

cd $LFS
tar -cf tools_backup.tar tools
でできるから、問題ないでしょ。

さて、本来なら、
6.2 仮想カーネルファイルシステムの準備
6.4 Chroot環境への移行
6.5 ディレクトリの生成
6.6 重要なファイルとシンボリックリンクの生成
まで実行して、その後は

chmod +x ch6-build.sh
./ch6-build.sh

で終わりのはずなのですが、glibcのinstallでエラーになります。
そして、そうなると、ch6-build.shをもう一度実行しようとしても、6.7 Linux-4.16.2 APIヘッダーでエラーになります。つまり、どうにもならなくなります。

仕方がないので、ch6-build.shを使わずに、手作業で実施していきます。
但し、ch6-build.shは非常に有益な資料なので、必ずすぐに見えるところにおいてください。私は、ctrl+Alt+F2で仮想端末を開き、そこで見てます。

6.7 Linux-4.16.2 APIヘッダーは、RaspberryPi専用のものを使ってください。
/mnt/lfs/sourcesディレクトリにrpi-4.14.y.tar.gzというファイルがあるので展開します。
作業は、ch6-build.shを見ながら実施してください。

…全部書くと大変なので、Linux From Scratch日本語版とch6-build.shを読み比べながら、問題ないところは、何も書かずにスルーします。

さて、問題の 6.9 Glibc-2.27 です。
エラーになるのは、
make install
そして、エラーの内容は・・・メモするの忘れた・・・まあ、perlスクリプトでのテスト中に、perlが-lnss_nis付きでビルドされていないよって感じ。それって、その直前で回避用の修正しているのですが。。。

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

perlを実行するのではなく、echoで実行しないようにしてるのに、、、なぜ???
きっと、中の小人さんが気を使って、config.statusでMakefileを作り直してくれたのでしょう。余計なことしやがって。。。

ということで、make install でエラーになって、perlスクリプトによるテストだったら、もう一度上記のsedスクリプトMakefileを書き換えてください。

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

一度で大丈夫だと思うんだけど、だめなら何回か試してね。

ということで、手元のほうでは順調に進んでいます。
しかし、手動でビルドしているので進みは遅いですね。途中で散歩したり買い物行ったり昼寝したり、放置している時間が長いってのもありますが。。。

現在は、6.16 Binutils-2.30のビルド中です。
今日はここまで、次回があったらそちらも読んでください。