OpenCVのインストール
Anacondaには、定番のライブラリがパッケージされていますが、OpenCVは入っていないので自分でインストールする必要があります。
ライブラリをインストールするのは、以下のコマンドを入力します。
pip install "ライブラリ名"
Anaconda PromptでOpenCVをインストールしてみましょう。
$ pip install opencv-python
Collecting opencv-python
Downloading https://files.pythonhosted.org/packages/a3/50/04d0669afe884f137c2f490642756e8c4a658254300a9eaf253d1e643085/opencv_python-4.1.0.25-cp37-cp37m-win_amd64.whl (37.3MB)
100% |████████████████████████████████| 37.4MB 617kB/s
Requirement already satisfied: numpy>=1.14.5 in c:\anaconda3\lib\site-packages (from opencv-python) (1.16.2)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.1.0.25
「Successfully installed opencv-python」と表示されたらインストール成功です。
念のためインストールされているかどうか確認しましょう。
インストール済みのライブラリを一覧を確認するコマンドは以下の通りです。
pip freeze
ついでに、「numpy」、「matplotlib」も一覧にあるかどうか確認し、インストールされていない場合は、インストールしておきましょう(今後しょっちゅう使います)
- Numpyは配列を作成するためのライブラリで、画像データの表現に利用します。
- matplotlibはグラフ表示をするためのライブラリで、ヒストグラムの表示で利用します。
続いて、pythonインタプリタで「cv2」をインポートしてバージョンを確認してみます。
>>> import cv2
>>> print(cv2.__version__)
4.1.0 #←OpenCVのバージョン
画像の表示
OpenCVで下の画像(hisyo.jpg)を表示します。
画像はPythonファイルと同じディレクトリに保存します。
#cv2をインポート
import cv2
#"hisyo.jpg"を変数"filename"に代入
filename = "hisyo.jpg"
#ファイルから画像データを読み込む関数
img = cv2.imread(filename)
#画像をウィンドウに表示する関数
cv2.imshow("image", img)
#キーイベントを待つ関数。0の場合はキーが押されるまで待つ)
cv2.waitKey(0)
これで「image」というウィンドウ名で画像ファイルが表示されます。
画像の属性情報
OpenCVで画像の属性情報を表示します。
import cv2
filename = "hisyo.jpg"
img = cv2.imread(filename)
print(img.shape)
# (1136, 1600, 3) ←(縦pixel size, 横のpixel size, 色の深さ=RBG=3色)
print(type(img))
# <class 'numpy.ndarray'> ←NumPyの配列(ndarray)で配列されている
print(img.dtype)
# uint8 ←8ビットの符号なし整数
#ヒストグラムの表示
matplotlib.pyplotを使ってヒストグラムを表示します。
import cv2
#matplotlib.pyplotをインポート。名前が長いので以下pltと呼ぶ。
import matplotlib.pyplot as plt
img = cv2.imread('hisyo.jpg')
#Matplotlibはヒストグラムを描画する関数
plt.hist(img.ravel(),256,[0,256]); plt.show()
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('hisyo.jpg')
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv2.calcHist([img],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.show()
ネガポジ変換
取り込んだ画像をネガポジ変換してみる。
import cv2
filename = "hisyo.jpg"
img = cv2.imread(filename)
# ネガポジ変換
nega = 256 - img #8ビットカラー(256色)をひっくり返すイメージ
# ファイルに保存する関数
cv2.imwrite("nega.jpg", nega)
グレースケール(モノクロ)変換
グレースケール(モノクロ)に変換してみる。
import cv2
filename = "hisyo.jpg"
img = cv2.imread(filename)
# モノクロに変換する関数
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# ファイルに保存する関数
cv2.imwrite("mono.jpg", mono)
以上、OpenCVを使った画像処理の基本でした。