OpenCVのimreadを使って画像・映像を読み込む方法

今回は、画像処理ができるオープンソースライブラリのOpenCVのimreadを使って、画像や映像を読み込む方法ついて徹底解説します!

画像処理や映像処理をしたい方必見の内容です。

OpenCVとは?

OpenCVとは

OpenCVは、画像処理・画像解析および機械学習等の機能を持つオープンソースのライブラリです。
Pythonを始め、C/C++、Java、MATLAB用として公開されており、もともとはインテルが開発・公開しています。

OpenCVのインストール方法

OpenCVのimreadを使用するには、Pythonやライブラリのインストールが必要です。
インストール方法はこちら(画像編集用ライブラリ「OpenCV」のインストール方法)にまとめてありますので御覧ください。

OpenCVのimreadを使って画像を読み込む方法

それでは実際に、OpenCVのimreadを使用して画像を読み込んでみましょう。
OpenCVには様々なことができるメソッドが用意されていますが、その中でも基本中の基本、imreadについてご紹介します。

それでは順を追ってPythonコードを書いていきましょう!

[Create New Project]で新しいプロジェクトを作成します。

OpenCV1

Locationに「opencv」と入力し[Create]をクリックします。
Pycharmでは、プロジェクトという単位でプログラムを管理することができます。
プロジェクトは、指定したLocationのディレクトリに作られたフォルダです。

OpenCV2

[File]-[New]で新しくファイルを作成します。

OpenCV3

ダイアログボックスから「Python File」を選びます。

OpenCV4

「Name」に「image.py」と入力し[OK]をクリックします。

OpenCV5

使用するライブラリをインポートします。
OpenCVはcv2でインポートできます。
また、Matplotlibはグラフ描画ライブラリとして、インポートした画像を視覚化(ビジュアライズ)するときに使用されます。

import cv2
import matplotlib.pyplot as plt

画像を読み込みます。
画像を読み込むにはimreadという関数を使用します。

image=cv2.imread(“image.jpg”)

このように、imreadとフォルダパスを書かずに読み込むと、pythonファイルと同階層のディレクトリにある画像が読み込まれます。
つまり、今回の場合は、「image.py」を保存したプロジェクトフォルダの中に、同じ名前のファイル名(image.jpg)として任意の画像ファイルを保存しておく必要があります。

読み込んだ画像をRGBに変換します。

image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

OpenCVのimreadで読み込む画像データの色情報は、一般的なRGB形式ではなく、BGR形式で読み込まれます。
このまま表示させようとすると、色合いがおかしくなるため、COLOR_BGR2RGBで色を変換しています。
Pythonに関連するライブラリや関数では、「2」を「to」の意味で使用することが多くあります。
BGR2RGBは、「BGR to RGB」、つまり「BGRをRGBに」と言う意味で使われています。

顔認識した画像を表示させます。

plt.imshow(image)
plt.show()
[Run]-[Run]で「image.py」を選択し、機械学習プログラムを実行します。

OpenCV6

画像が表示されます。

OpenCV7

クッパ22さんによる写真ACからの写真

OpenCVのimreadの機能

imreadは、画像をインポートする際に、他にも引数を指定することができます。
imreadでは、インポートする際のカラータイプも指定することができます。

cv2.imread(“画像ファイル名”,画像のカラータイプ指定flags)

flags:
>0 画像は,強制的に3チャンネルカラー画像として読み込まれます
=0画像は,強制的にグレースケール画像として読み込まれます
<0画像は,そのままの画像として読み込まれます

例えば、imreadでグレースケールの画像として読み込んでみましょう。
flagsを0に設定するのと同時に、グレースケール(白黒表示)となるため、BGR2RGBはコメントアウトしておいてください。

import cv2
import matplotlib.pyplot as pltimage = cv2.imread(“image.jpg”, flags=0)
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image)
plt.show()

このimreadのプログラムを実行すると、このような表示になるはずです。

OpenCV8

変な色ですね。
これは実はmatplotlibの機能のせいでして、グレースケールの画像を無理やりカラーで表示しようとしているためです。
Matplotlibを使ってグレースケール画像をビジュアライズする際には、plt.gray()をつけておきましょう。

import cv2
import matplotlib.pyplot as pltimage = cv2.imread(“image.jpg”, flags=0)
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)plt.imshow(image)
plt.gray()
plt.show()

これでグレースケールで表示されたはずです。

OpenCV9

OpenCVで動画(映像)を読み込む方法

先程までは画像データを読み込んでいましたが、今度は動画データを読み込んでみましょう。
画像を読み込むのはimreadという関数でしたが、動画の場合はimreadではなくVideoCaptureという関数を使用します。

[File]-[New]で新しくファイルを作成します。

OpenCV10

ダイアログボックスから「Python File」を選びます。

OpenCV11

「Name」に「movie」と入力し[OK]をクリックします。

OpenCV12

使用するライブラリをインポートします。

import cv2
import matplotlib.pyplot as plt

動画を読み込みます。
動画を読み込むにはVideoCaptureという関数を使用します。

cap = cv2.VideoCapture(‘movie.mp4’)

ここでも、「movie.py」を保存したプロジェクトフォルダの中に、同じ名前のファイル名(movie.mp4)として任意の動画ファイルを保存しておく必要があります。

動画の場合は、画像と違って1フレームごとに読み込みを行います。
読み込むフレームを最後まで読み、 読み切った際に処理が終了するようにwhileとif文を使用して読み込んでいます。
cap = cv2.VideoCapture(‘movie.mp4’)
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow(‘frame’,frame)
if cv2.waitKey(1) &amp; 0xFF == ord(‘q’):
break

読み込んだ動画を表示させます。

cap.release()
cv2.destroyAllWindows()
[Run]-[Run]で、「movie.py」を選択し機械学習プログラムを実行します。

OpenCV13

動画が表示されます。

OpenCV14

まとめ

いかがだったでしょうか。
今回は、imreadによる画像や動画の読み込みだけでしたが、この画像からネコの顔だけを認識したり、人間の顔だけを認識したりといったことや、モザイク処理や反転処理などの画像編集を行えるのがOpenCVのimreadの特徴です。
是非OpenCVをインストールして、画像のAI(人工知能)を作る一歩を踏み出してください!

最新情報をチェックしよう!