Python で OpenCV を使用した画像処理における基礎知識をまとめています。
この記事で学べること
- 画像処理における最低限必要な知識
- OpenCV 独自の基本知識
【共通】画像処理における座標軸
画像処理では、「左上」を座標軸の原点として扱います。
学校で習うグラフなど、普段の感覚とは異なるので、注意が必要です。
「左上」を原点にして、右方向にX軸、下向きにY軸を取ります。
普段の感覚で座標を計算すると、誤った画素へアクセスすることになります。
座標は、X軸・Y軸ともに「0」から始まります。
【OpenCV独自】OpenCV における画素値
色の3原色と言われる「赤」「緑」「青」は、それぞれの英語の頭文字をとって「RGB」と略されます。
普段使用しているお絵描きソフトなどでは、この「RGB」値で画素の色を調節したりします。
一方、OpenCV の画素値は「BGR」の順で保存されています。
普段慣れている順番とは異なりますので、注意が必要です。
「BGR」の順で並んでいるため、例えば上図の赤っぽい色の飴では、最後の「R」の値が大きくなります。
また、青っぽい色の飴では、最初の「B」の値が大きくなります。
【OpenCV独自】numpy の配列に格納されている画素値
OpenCV で画像を読み込むと、(y, x, color) の順番で numpy の配列に画素値が格納されます。
また、画像の大きさを取得する shape は、(高さ, 幅) の順番で値を返します。
※高さ=height、幅=width
例えば、OpenCV で画素値、画像の大きさを取得する場合は、
以下のように Python のプログラムを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 |
import cv2 img = cv2.imread("sample.jpg") # 画素値を取得 blue = img[177][291][0] green = img[177][291][1] red = img[177][291][2] # 画像サイズを取得 height, width = img.shape[:2] |
まとめ
- 画像処理では、「左上」が原点
- OpenCV では、(B, G, R) の順番で画素値が格納されている
- OpenCV では、(y, x, color) の順番で numpy の配列に格納されている