頑固社会人がブログ始めてみた

子育てパパが等身大で日々の出来事や感じたことについて書きます

Raspberry Pi Zero python3 opencvインストール

python3にopencvを入れようとしてとにかく大変だった・・・

 

そもそも何も理解していない自分が設定を行うこと自体おこがましい。

というか、無理に等しい。

 

今回も他の方のブログや情報を参考にさせてもらった。

ことの発端は最初に書いた

import cv2

ImportError:No module named cv2

はい、エラー発生。

ひとまず

sudo pip install cv2

Collecting cv2
Could not find a version that satisfies the requirement cv2(from versions: )
No matching distribution found for cv

よくわからんがなんかできてない。

qiita.com

ひとまずこの方のブログを参考に

sudo apt-get install python-opencv

sudo apt-get install libopencv-dev

それでもpython3のimport cv2でエラーが生じる

よくわからんが、なにか状況が違うのだろう。

ということで、

creepfablic.site

こちらのブログではエラーの状況に対する方法が途中まで一致したので

感謝しながらコードを脳死状態で打つ。

 

pip3 install opencv-python

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

 

この方のブログの最後のエラーまで到達。

ImportError: undefined symbol: __atomic_fetch_add_8

ImportError: /lib/python3.7/site-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8

 

vi .bashrc

export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 #この一文を追加

再読み込みさせ反映を行ってみた。

source .bashrc

でもエラーが発生し続けている。

ImportError: undefined symbol: __atomic_fetch_add_8

 

ここまでか・・・・

ということでbashrcの中身を戻して再び放浪

stackoverflow.com

ここまで来たら手あたり次第にやるしかない。

sudo apt update && sudo apt-get install python-opencv python-scipy ipython

やってみたが、効果がない。

 

ほかのブログを見ていてコードがあったのでとりあえず試す。

その後のコードが長すぎて心が折れたのでupgradeまでしかしてない。
sudo apt-get update
sudo apt-get upgrade

 

qiita.com

この辺からやっと兆しが見え始めた。

時刻はもう午前4時頭が働くどころの話ではない。

ひたすらに書いてあることだけを打っていく。

$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libjasper-dev

sudo pip3 --default-timeout=1000 install opencv-python

これでもpython3 import cv2をやるとエラーは起きている。

エラーはやはり以下のエラー・・・

ImportError: undefined symbol: __atomic_fetch_add_8

先ほどのブログと異なるのはまずターミナルで以下を実行していた。

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1

次にvimでbashrcを変更。

vim.tiny .bashrc
export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 #この一文を追加

そして適用(先ほどもおこなったのだが・・・)

source .bashrc

再起動もしたかもしれない(もうはっきり覚えていない)

あきらめムードでpython3

import cv2をおこなったところエラーなし

ほっと一息ついてしばらくしてimport cv2を行ったらなぜかまたエラー・・・

 

qiita.com

半泣きになりながら最後の望みをかける。

sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev

 

もう何を書いているのかすでに同じコードを書いたのかすらわからずただ時間が過ぎるのを待つ。

sudo pip3 --default-timeout=1000 install opencv-python

一度動いたことだけが心の支えであった。

$ python3
>>> import cv2
>>>

できた。

結局何が原因だったのかなぜ一度うまくいって再びエラーが起きたのかはわからない。

だが、先人たちはすげぇ。感謝してもしきれない。