Arch LinuxにOpenCVを導入した話
普段の作業でOpenCVが必要であるため、導入する。
長々と書くが、以下を実行すれば使えるようになる。
「OpenCV自体はすんなり入るけど、Numpyを忘れないようにね。」という話。
$ sudo pacman -S opencv $ sudo pacman -S python-pip $ sudo pip install numpy
OpenCVのインストール
この一行でインストール。素晴らしい。
$ sudo pacman -S opencv
Pythonから触りたいのだが、このパッケージに含まれているのだろうか。確認する。
$ pacman -Ql opencv | grep python opencv /usr/lib/python2.7/ opencv /usr/lib/python2.7/site-packages/ opencv /usr/lib/python2.7/site-packages/cv2.so opencv /usr/lib/python3.5/ opencv /usr/lib/python3.5/site-packages/ opencv /usr/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so
確かに入っている。
importできるか試す。
$ pyhton >>> import cv2 ImportError: numpy.core.multiarray failed to import Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: numpy.core.multiarray failed to import
怒られる。辛い。
どうやら、numpyが入っていない様子。
$ pyhton >>> import numpy Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'numpy'
なるほど。入っていない。
では、numpyを入れよう。
numpyのインストール
そもそも、pipが入っていないのでpipのインストールから始める。
調べてみると"python-pip"と"python2-pip"の2つある。
Python3で使うのなら"python-pip"をインストールする。*1
$ sudo pacman -S python-pip
さて、numpyを入れよう。
$ sudo pip install numpy
改めて試してみる
無事、importできた
$ pyhton >>> import cv2 >>> cv2.__version__ '3.1.0'
さらに、適当に画像を2値化してみた。
# -*- coding: utf-8 -*- import cv2 import sys if __name__ == '__main__': params = sys.argv if len(params) < 2: sys.exit(1) else: file_name = params[1] img_src = cv2.imread(file_name, cv2.IMREAD_GRAYSCALE) ret, img_bin = cv2.threshold(img_src, 100, 255, cv2.THRESH_BINARY) cv2.imshow("binary", img_bin) cv2.waitKey(0) cv2.destroyAllWindows()
無事動いているようで何より。
簡単に新しいバージョンを使えるのはありがたい。
よもやま話
無理にpipを使わなくても、pacmanでnumpyなどの主要なモジュールはインストールできるが、それでもpipを使ったほうがいいのだろうか。
*1:python3-pipって名前ではないんっすね