1,998 views
この記事は最終更新から 2187日 が経過しています。
1. やりたいこと
Pythonで OpenCVを使ってみたい。
OpenCV については説明するまでもないが、CV(Computer Vision)の名の通り、画像認識などに代表される画像・映像処理関連のライブラリだ。
C++ではちょくちょく使っているが、Pythonでは使ったことがない。
画像データは2次元、3次元配列なので、配列操作を簡潔に書ける Pythonだと画像データを扱い易いはず。
2. やってみる
(0) 事前準備
ここでは anacondaでインストールした Python3 環境にインストールする。
pip等、anaconda配下のプログラムが起動するようにパスを通す。
export PATH=~/anaconda3/bin/:$PATH
(1) OpenCVをインストール
入門編なので、ソースからコンパイルではなく、パッケージとして用意されている物を使う。
# pipが入っているか? python3 -m pip -V # Case1 : なければインストール wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py rm get-pip.py # Case2 : あっても更新しておく。 pip install -U pip # OpenCVをインストール pip install opencv-python # msgpackが古いと怒られたのでインストール pip install --upgrade msgpack # ついでに PILをインストールしておく。 pip install pillow
(2) カラー画像を白黒画像に変換する。
import cv2 # 画像ファイルを読み出す。 img = cv2.imread("pic.jpg") # 平均値を求める。 imgG = img.mean(axis=2) # 表示 from PIL import Image imgP = Image.fromarray(imgG) # numpy配列から変換 imgP.show()
できた!
でも…
これではファイル読み出しに OpenCVを使っているだけで宝の持ち腐れだ。
そこで、今度は OpenCVで白黒画像に変換する。
import cv2 # 画像ファイルを読み出す。 img = cv2.imread("pic.jpg") # 白黒画像に変換する。 imgG = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 表示 from PIL import Image imgP = Image.fromarray(imgG) # numpy配列から変換 imgP.show()
できた!
3. おまけ
(1) 画像の表示方法(cv2を使う場合)
上記のプログラム例では PILを使って表示している。
OpenCV公式サイトのプログラム例では、cv2を使って以下のように表示している。
import cv2 img = cv2.imread('image.jpg') cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE) cv2.imshow('image', img) cv2.waitKey() cv2.destroyAllWindows()
Windowのタイトルバーに任意の文字列を書けるのでこちらの方がよいか?
でも、最後に waitkey() なる一行を実行しないと表示されないのはなぜ?
詳細はこちらの公式ページを参照のこと。
Operations with images
4. 所感
とりあえず Pythonで OpenCV初体験なので、これぐらいにしておこう。
続くかな…