PythonでOpenCVを使った画像の読み込みや画像をグレーに加工する方法を解説する

スポンサーリンク

Pythonは画像を簡単に取り込んで遊べます。

Pythonで画像の読み方を知ることで、画像処理や画像データに対する機械学習モデルの学習ができるようになります。

スポンサーリンク

画像処理とは

画像処理とは、画像に何らかの処理を施すことで、より美しい画像を得たり、画像から有用な情報を抽出したりすることです。

画像処理の分野は、今後急速に発展していく分野です。

画像処理では、画像中の物体の検出が可能で、自動運転車から医療分野での腫瘍検出まで幅広く応用されています。

イメージって何?

というのは無茶な質問だ。

もちろん、画像とは何かはご存じでしょう。

むしろ、「機械にとっての画像とは何か」という質問の方が適切だろう。

あなたが画像として見ているものは、実はコンピュータにとっては2Dの行列なのです。

デジタル画像は、ピクセルの組み合わせとして保存されています。

各ピクセルはさらに、異なる数のチャンネルを含んでいます。

グレースケール画像なら1画素だけですが、カラー画像は赤、緑、青の3つのチャンネルを持っています。

各ピクセルの各チャンネルは0から255の間の値を持っています。

赤、緑、青を異なる割合で組み合わせることで、どんな色でも作ることができます。

PythonでOpenCVを使って画像を読み込む

この記事では、OpenCVライブラリを使用してPythonで画像を読み取る方法を学びます。

OpenCVは、主にリアルタイムコンピュータビジョンを目的としたプログラミング関数の、オープンソースのコンピュータビジョン・機械学習ソフトウェアライブラリです。

1. OpenCVライブラリのインストール

以下のようにpipコマンドでインストールします.

pip install opencv-python
import cv2


OpenCV を Python プロジェクトで利用するためには,インポートする必要があります.インポートするには,以下の行を使用します.

img = cv2.imread('image_path')

2. 画像を読み込むプログラミング

OpenCV を用いて画像を読み込むには,以下のコードを使用します.

print(img)

これで,変数 img はピクセル値の行列になります.これをプリントすれば、RGBの値を見ることができます。

この例で使用する画像は以下の通りです。

import cv2
 
#read
img = cv2.imread('sample_image.jpg')
 
#show
print(img)

行列を印刷するには、次のようにします。

ccv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. PythonでOpenCVを使って画像を読み込む実装の完成形

完全なコードは以下の通りです。

import cv2
#read
img = cv2.imread('sample_image.jpg')
#show
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果は以下の通りです。

gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Python OpenCVによる画像の表示

OpenCV を用いて画像を表示するには,以下の行を使用します.

#read
img = cv2.imread('sample_image.jpg')
#to grayscale
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#show
print(gray_image)
cv2.imshow('image',gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() は,キーボードバインディング関数です.引数は,ミリ秒単位の時間です.

この関数は,指定されたミリ秒の間,キーボードイベントが発生するのを待ちます.その間に何らかのキーが押されれば、プログラムは続行されます。

0を渡すと、キー入力があるまで無期限に待ちます。

Pythonの実装

画像を表示するための完全なコードは以下の通りです。

cv2.imwrite('sample_grayscale.jpg',gray_image)

Python OpenCVを用いた画像処理

OpenCVには,画像を操作するための多くの機能があります.ここでは,画像をグレースケールにする方法について見ていきます.

グレースケール画像とは,各ピクセルが0から255の値を持つ1つのチャンネルだけを持つことを意味します.

これを行うためのコードは :

import cv2
 
#read
img = cv2.imread('sample_image.jpg')
#to grayscale
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#show
print(gray_image)
#save
cv2.imwrite('sample_grayscale.jpg',gray_image)

Pythonコードの実装

画像をグレースケールにするための完全なコードは以下の通りです。

Install Opencv
Install OpenCV
Read images in Python using OpenCV
Sample Image

この行列の次元は、カラー画像の行列とは異なることがわかります。

操作した画像ファイルを保存する

操作後のイメージを保存するには、以下のコードを使用します。

Image Matrix

第一引数にファイル名、第二引数に保存したい画像を格納した変数を指定します。

ここでは、上で作成したグレースケールの画像を保存しています。

カラー画像をグレースケールにするための完全な Python コード

画像を保存するための完全なコードは以下の通りです。

Grayscale Image
Grayscale
This is what the saved image looks like

まとめ

この記事では、PythonでOpenCVを使って画像を読み、操作する方法について説明しました。

OpenCV をより深く知るには、そのドキュメントを読んでください。

タイトルとURLをコピーしました