「Raspberry Pi 3にOpenCV 3.1のインストール」でRaspberry Pi 3でOpenCV 3.1をインストールしましたが、OpenCV 3.1を使って画像処理を行います。
画像処理プログラムの作成
対象となる画像をグレースケールに変換し、閾値処理により画像セグメンテーションを行います。
- 6行目のimreadメソッドで画像を読み込みます。OpenCVでは、画像は3次元のNumPy配列で表されています。1つ1つの画像は、ピクセルの行列で構成され、各ピクセルはその色を表す値の配列によって表現します。OpenCVの場合、画像はBGRフォーマットで読み込まれる初期設定となっていますが、Matplotlibの場合はRGBで読み込まれます。
- 9行目のcvtColorメソッドで画像をグレースケールに変換します。グレースケール画像は、最も暗い色(黒)を表す0、最も明るい色(白)を表す255により、ピクセルの明るさを表現する256階調のスケールで、1つの色チャンネルしか持っていない2次元の配列で示します。
- 12行目のthresholdメソッドで、ピクセルのチャンネル値がある閾値を超えた場合は、画像の各ピクセルを白いピクセルに、超えなかった場合は、黒いピクセルに置き換える閾値処理を実行します。閾値処理は画像セグメンテーションの一番簡単な方法で、興味のある特徴ごとに分割し、画像情報を集め、分析を容易にします。
- 15行目のimwriteメソッドで、作成した画像を保存します。
imgproc.py
import cv2, matplotlib import numpy as np import matplotlib.pyplot as plt # read an image img = cv2.imread('images/yokohama.jpg') # convert image to grayscale gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # threshold for image, with threshold 80 _, threshold_img = cv2.threshold(gray_img, 80, 255, cv2.THRESH_BINARY) # write grayscale img cv2.imwrite('images/yokohama_gray.jpg', threshold_img) # show image threshold_img = cv2.cvtColor(threshold_img, cv2.COLOR_GRAY2RGB) plt.imshow(threshold_img) plt.show()
画像処理プログラムの実行
作成した画像処理プログラム「imgproc.py」を次のコマンドで実行します。
$ python3 imgproc.py
元の画像を次に示します。
画像処理プログラム「imgproc.py」を使って、画像処理した画像を次に示します。