2
7

More than 3 years have passed since last update.

【Python】OpenCVで画像を読み込む (初心者向け)

Last updated at Posted at 2020-03-22

はじめに

最近Pythonが何かと話題になっています。PythonではOpenCVと呼ばれるライブラリを使うことで、簡単な画像処理ができます。本記事では、OpenCVで画像を読み込んで、色々処理する方法を解説します。

環境

MacOS Mojave
Python 3.7.6

下準備

opencvとmatplotlibと呼ばれるライブラリをインストールします。matplotlibはグラフを書くためのライブラリで画像の表示などでも使用できます。以下のコマンドをそれぞれターミナルに打ち込んで、実行してください。

$pip install opencv-python
$pip install matplotlib

"opencv"だけではインストールできないので注意してください。Requirement already satisfiedと表示されて入れば、既にインストールされているので、問題ありません。

画像を読み込んでみよう

今回は以下の猫 (neko.jpg) の画像を使用します。
neko.jpg

以下のコードを実行します。

opencv_read_img.py
#ライブラリの読み込み
import cv2
import matplotlib.pyplot as plt

#neko.jpgを読み込んで、imgオブジェクトに入れる
img = cv2.imread("neko.jpg")

#imgオブジェクトをmatlotlibを用いて表示する
plt.imshow(img)
plt.show()

最初のimportの部分でopencv (cv2) とmatplotlibのpyplot (matplotlib.pyplot) を読み込んでいます。as pltというのはmatplotlib.pylotを長いから、pltに省略してこれから使いますよーていう意味です。

以上のコードを実行して、以下のような画面が出てくれば成功です。
neko_出力.png

ただ、猫ちゃんが変な色になってしまいましたね? これはopencvではGBR (緑・青・赤) 、matplotlibではRGB (赤・緑・青) と色の表現方法が異なることが原因で起こります。なので、元の色で表現する為には、色の変換が必要です。

色の変換方法

画像を読み込んだ後に、cv2.cvtColor()を使います。

opencv_read_img.py
#ライブラリの読み込み
import cv2
import matplotlib.pyplot as plt

#neko.jpgを読み込んで、imgオブジェクトに入れる
img = cv2.imread("neko.jpg")

#画像の色の順序をBGRからRGBに変換する
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#imgオブジェクトをmatlotlibを用いて表示する
plt.imshow(img)
plt.show()

以上のコードを実行すると、以下の画面が出力されます。
スクリーンショット 2020-03-22 20.07.54.png
もとの画像が表示されましたね!
次回は簡単な画像処理を行って保存する方法を解説します。

トラブルシューティング

python: can't open file 'opencv_read_img.py': [Errno 2] No such file or directory

これは、ファイルがないよというエラーです。この場合は以下の手順を行ってください。

①作成したpythonファイルと同じ位置に画像をおく。
画像のフォルダ.png

②ターミナルでpythonファイルが置いてあるフォルダに移動する。
もしディスクトップのqiita_pythonというフォルダの中にpythonファイルと画像が入ってるとしたら以下のコマンドを実行してください。

$cd /Users/ユーザー名/Desktop/qiita_python
$python opencv_read_img.py

Twitterやってます

もしよろしければフォローお願いします!
https://twitter.com/ryuji33722052

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7