(96) OpenCV #1 : まずは使ってみる。

(96) OpenCV #1 : まずは使ってみる。

1. やりたいこと

Pythonで OpenCVを使ってみたい。

OpenCV については説明するまでもないが、CV(Computer Vision)の名の通り、画像認識などに代表される画像・映像処理関連のライブラリだ。

C++ではちょくちょく使っているが、Pythonでは使ったことがない。
画像データは2次元、3次元配列なので、配列操作を簡潔に書ける Pythonだと画像データを扱い易いはず。

2. やってみる

(0) 事前準備

ここでは anacondaでインストールした Python3 環境にインストールする。
pip等、anaconda配下のプログラムが起動するようにパスを通す。

export PATH=~/anaconda3/bin/:$PATH

※anacondaの入れ方はこちらを参照のこと。

(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初体験なので、これぐらいにしておこう。
続くかな…


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*