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
よくわからんがなんかできてない。
ひとまずこの方のブログを参考に
sudo apt-get install python-opencv
sudo apt-get install libopencv-dev
それでもpython3のimport cv2でエラーが生じる
よくわからんが、なにか状況が違うのだろう。
ということで、
こちらのブログではエラーの状況に対する方法が途中まで一致したので
感謝しながらコードを脳死状態で打つ。
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の中身を戻して再び放浪
ここまで来たら手あたり次第にやるしかない。
sudo apt update && sudo apt-get install python-opencv python-scipy ipython
やってみたが、効果がない。
ほかのブログを見ていてコードがあったのでとりあえず試す。
その後のコードが長すぎて心が折れたのでupgradeまでしかしてない。
sudo apt-get update
sudo apt-get upgrade
この辺からやっと兆しが見え始めた。
時刻はもう午前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を行ったらなぜかまたエラー・・・
半泣きになりながら最後の望みをかける。
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
>>>
できた。
結局何が原因だったのかなぜ一度うまくいって再びエラーが起きたのかはわからない。
だが、先人たちはすげぇ。感謝してもしきれない。