AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

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

公開日:2019.09.07 [最終更新日]2019.10.02

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

カテゴリー: Opne CV

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

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

OpenCVとは?

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

OpenCVのインストール方法

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

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

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

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

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

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

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

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

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

import cv2
import matplotlib.pyplot as plt

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

image=cv2.imread("image.jpg")

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

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

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

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

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

plt.imshow(image)
plt.show()

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

画像が表示されます。


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

OpenCVのimreadの機能

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

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

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

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

import cv2
import matplotlib.pyplot as plt

image = cv2.imread("image.jpg", flags=0)
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image)
plt.show()

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

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

import cv2
import matplotlib.pyplot as plt

image = cv2.imread("image.jpg", flags=0)
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image)
plt.gray()
plt.show()

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

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

先程までは画像データを読み込んでいましたが、今度は動画データを読み込んでみましょう。
画像を読み込むのはimreadという関数でしたが、動画の場合はVideoCaptureという関数を使用します。
[File]-[New]で新しくファイルを作成します。

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

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

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

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) & 0xFF == ord('q'):
  break

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

cap.release()
cv2.destroyAllWindows()

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

動画が表示されます。

まとめ

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

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中
AI(人工知能)入門セミナー AI(人工知能)入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ

【マサミ】

アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。


【三谷】

AIセミナー責任者、講師。AIについての幅広い知識を持ち、人に分かりやすく伝える技術を持つ。特にAIを事業や仕事に取り入れる方法について日々講義しています。

AI研究所Twitter

Facebookページ