重要なお知らせ:新型コロナウイルス、インフルエンザ等の感染予防・拡散防止の対策についてこちらをご確認ください。

AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる(AI人材育成・セミナー) -

  • お問い合わせ

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

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

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

Opne CV

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

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

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 plt

image = 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 plt

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

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

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

OpenCV13

動画が表示されます。

OpenCV14

まとめ

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


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

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