min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi3 WebカメラでQRコードを読み取る(イベント会場QR受付システムの準備)

ハピタス登録で1,000円分になるURL

その買うを、もっとハッピーに。|ハピタス

 

ラズパイでQRコードを読む

これやりたい。

hellobreak.net

カメラはメルカリでGETした。

 

$ sudo apt install libavutil56 libcairo-gobject2 libgtk-3-0 libqtgui4 libpango-1.0-0 libqtcore4 libavcodec58 libcairo2 libswscale5 libtiff5 libqt4-test libatk1.0-0 libavformat58 libgdk-pixbuf2.0-0 libilmbase23 libjasper1 libopenexr23 libpangocairo-1.0-0 libwebp6

$ sudo pip3 install opencv-python

やたら時間かかる。opencvはやっぱ重いのか→なぜか固まった。待てなくて電源ブチで再起動。やり直す。

今度は負荷計測しながらやる。Load averageはそんなでもないが…

16分経過したところでCPU使用率が4コア全部100%近くになった。

ハングしてるよなこれ。

VNCして直接pi上でやってみるか。

この「Running setup.py bdist_wheel for...」で固まるんだよな。

負荷はそれほどではないぽいが。VNCもちゃんと動いてるし…しかしインストールが進まない。

 

そもそもbdist_wheelって何よ

blog.n-t.jp

うーん、わからん。

 

そうか。apt update してないから?いったんキャンセルして(sudo apt updateしてから)やり直す。

$ sudo apt upgrade

$ sudo apt update

upgradeが大量にある。これか原因は。

upgrade後に再度opencvのインストール。

$ sudo pip3 install opencv-python

やはり固まった?かと思うくらい時間かかった(sshも通じない、pingだけは通る)状態が続いたが、まる1日放っておいたらコンソールが返ってきた。

 

しかし、python3上げてimport cv2してもNo module named 'cv2'エラーになってしまう

バージョン指定でopencvをインストールし直してみる

$ sudo pip3 install opencv-python==4.1.0

$ sudo pip3 install opencv-python==4.6.0.66

あれ!?数分でインストール成功した!

 

最新バージョン(4.7.0.68)がバグってだだけか!一個前の(4.6.0.66)でインストールできたっぽい!

と思ったが…

$ python3

>>> import cv2

またimport cv2がエラーに。

ImportError: libcblas.so.3 で調べる。

こうかな。

$ sudo apt-get install libatlas-base-dev

$ python3

>>> import cv2

またエラーか…が、まだまだ諦めない。

ImportError: numpy.core.multiarray でググる

時間かかる…結局またbdist_wheelか…しかし今回はsshは固まらないので進んでるっぽい。

Webにも似たような経験談

 

htopでモニタリングしたら負荷が凄いことに。

$ htop

Load averageが20超えてる。こりゃ固まって見えるわけだ…(かろうじて数分に1回画面が更新されるのでhtop自体は生きてる。numpyのインストールが重すぎるだけか)

 

…(gccに丸2日かかった…)

$ python3

>>> import cv2

まだダメ…だと…

 

numpyのバージョンチェック。

$ python3

>>> import numpy as np

>>> print(np.__version__)

>>> print(np.__path__)

ふむ。

 

ここで発想を変えてみよう。既にコンパイル済みのopencv2のバイナリがあればいいのではないか。

これか。

今のOSバージョンはbusterなんだが…Bullseyeって何…

いいや。OSの違いは無視。入れてみる。ままよ。

$ wget https://github.com/prepkg/opencv-raspberrypi/releases/latest/download/opencv.deb

ダメね。

そうか、コンパイル済みのopencvやnumpy取ってきても意味ないのか。要はインストールされてるpython3にマッチしたopencv&numpyを組み上げなきゃいけないんだから、やっぱpip3 numpy --upgradeしてnumpyのコンパイル走らせる必要があるのかも。

 

エラーをもっかいよく見てみる

これか。

$ sudo pip install numpy --upgrade --ignore-installed

いったんキャンセル。

 今のnumpy 1.16.2

 入るnumpy 1.16.6

状況は分かった。

 

再開。

$ sudo pip3 install numpy --upgrade --ignore-installed

あれ?pip3だと

 今のnumpy 1.16.2

 入るnumpy 1.21.6

になる。なんかpipかpip3かでnumpyが違う。このへんが原因なのか?

 

$ pip3 uninstall numpy

$ pip3 uninstall python3-numpy

どちらもそんなパッケージ無いってエラーになる。なぜ。

 

$ sudo apt purge python3-numpy

む。これでやっと python3-numpy(バージョン1.16.2)を消せたらしい。

どうにかし新たに python3-numpy(バージョン1.21.6)を入れたい。

 

$ pip3 list | grep numpy

$ python3 -m pip freeze | grep numpy

$ python3 -m pip3 freeze | grep numpy

$ dpkg -l numpy

$ dpkg -l python3-numpy

 

$ pip3 list | grep opencv-python

$ python3 -m pip freeze | grep opencv-python

$ python3 -m pip3 freeze | grep opencv-python

$ dpkg -l opencv-python

$ dpkg -l python3-opencv-python

$ sudo apt purge opencv-python

$ pip3 uninstall opencv-python

$ sudo pip3 uninstall opencv-python

$ python3

>>> import numpy

>>> import opencv

いずれも No module エラー。これで完全にアンインストールできたはずだ。

 

$ pip3 list | grep pip

$ pip3 list | grep setuptools

$ python3 -m pip3 install --upgrade pip3 setuptools

pip3とsetuptoolsが古い。どうもこれがすべての原因ぽい。

 

$ pip3 install --upgrade pip3 setuptools

$ pip3 install --upgrade pip setuptools

 

$ pip3 list | grep pip

$ pip3 list | grep setuptools

どうやら pip3をコマンドとして直接使うのはもう良くないようで、python -m pipのようにpythonのモジュールとして呼んで使うのが正しいようだ。

pip3は消え去って、pipを使う

$ pip --version

$ pip -V

pipコマンドじゃなくて python3 -m pip ... として使うのが今後のお作法っぽい。

これで晴れてnumpyとopencvの最新版をインストール試す。

とはいえ

$ python3 -m pip install numpy とはせずに

$ python3 -m pip install opencv ともせずに

以下で試す。

$ python3 -m pip install opencv-python

お!numpyがインストールされてるうえに、最新のバージョンnumpy-1.21.6が選ばれてる!

コレはうまくいく予感。

インストールに時間はかかってるが負荷もマトモでコンソールも固まったりしない。

途中から負荷が上がってきたが、コンソール固まらずsshも繋がったままだ。

gccが重いのか。

やっぱ途中からコンソールが固まり始めた。sshはかろうじてつながっているが。

負荷がすごい。Load averageが25を超え始めている。snapdが激重らしい。

 

 

 

 

qiita.com

www.koi.mashykom.com

 

 

 

 

 

その買うを、もっとハッピーに。|ハピタス