OpenCVライブラリ

OpenCV(Open Source Computer Vision Library)とは、画像や動画を表示、解析、処理できるライブラリです。

商用目的でも使用でき、マルチプラットフォームなのが特徴です。

opencvライブラリのインポート

import cv2

これでインポートができます。

画像の読み込み

指定した画像を読み込みます

img = cv2.imread("image.jpg",1)

imread関数を使って指定した画像を読み込みます。

返り値はnumpy配列で返ってきます。

引数は

1) 画像名(必要に応じてパス)

2) 0…グレースケール

1…RGB画像

となっています。

画像の保存

指定した名前で画像を保存します。

cv2.imwrite("image.py",img)

imwrite関数を使って画像を保存することができます。

引数は

1) 保存する画像名(必要に応じてパス)

2) 画像データ(numpy配列)

となっています。

画像の表示

画像を画面上に表示させます。

cv2.imshow("window",img)

imshow関数を使って画像を画面上に表示させることができます。

引数は

1) 表示させるウインドウ名

2) 画像データ(numpy配列)

となっています。

しかし、これだけでは画像は一瞬だけ表示さるだけですぐに消えてしまいます。

そこで、imshow関数を使ったプログラム例を2つ挙げます。

例1

import cv2

img = cv2.imread("image.jpg",1)

cv2.imshow("window",img)

cv2.waitKey(0)

cv2.destroyAllWindows()

指定した画像を何かのキーを押すまで画像を表示し続けるプログラムです。

このプログラムではimshowで処理が止まるので、確認目的での使用は簡単に記述できていいのですが、実際にプログラム中で画像を表示させながら他の処理をしたいときは困ってしまいます。

例2

import cv2

while True:

img = cv2.imread("image.jpg",1)

cv2.imshow("window",img)

k = cv2.waitKey(1)

if k == org("q")

cv2.destroyAllWindows()

指定した画像をqのキーを押すまで表示させるプログラムです。

例1と大きく違うところはループの中で画像を表示させていることです。

これにより、ループの中で他の処理をさせることができます。

例のプログラムで出てきたwaitKey関数とdestroyAllWindows関数について説明します。

キーの入力を待つ

cv2.waitKey(0)

waitKey関数でキーボードからのキーの入力があるまで待機します。

返り値は押されたキーコードが返っています。

引数は

1) 待機する時間(0だと無限)

となっています。

返ってくるキーコードをif文で判断して処理をすることもできます。

表示させた全てのウインドウを閉じる

cv2.destroyAllWindows()

destroyAllWindows関数で画面上に表示されたウィンドウを全て閉じることができます。

指定したウィンドウを閉じる

cv2.destroyWindow("window")

destroyWindow関数で指定したウインドウを閉じることができます。

引数は

1) ウインドウ名

となっています。

HOMEに戻る