画像の読み込みと表示

画像の読み込み

画像を読み込むには、imread関数を使用します。 image read (画像を読み込む)という意味です。 その前にimportを忘れないようにしましょう。

Code
import cv2 as cv
img = cv.imread('example.png')

cv (cv2cvという名前で使っている)というライブラリのimread関数を使用するという意味で、先頭にcv2.とつけて関数を呼び出します。 これで、example.pngという画像を読み込むことができます。 多くの場合、img (imageの略)やimなどという名前の変数に入れます。

パスの指定に注意

画像のパスの指定はよくつまづくので注意しましょう。 基本的には、コードのあるファイルからの相対的な位置を指定します(相対パス)。 上記のコードの場合は、コードファイルと同じ階層(フォルダ)に画像が存在しています。

画像の表示

画像の表示には、imshow関数を使用します。

cv.imshow('window-name', img)
cv.waitKey(0)

以下のようなウインドウが表示されます。

表示されるウインドウ

表示されるウインドウ

バツボタンでウインドウを閉じると終了です。 2行目のwaitKey関数は、キー入力を待つ関数です [1]。引数に0を指定した場合は、バツボタンが押されるまで画像を表示し続けます。 1以上の数字を指定した場合は、その数字のミリ秒だけ待ち、終了します。 waitKeyを入れない場合は、すぐに画像が閉じられてしまうため、imshowとセットで用いられます。

標準画像

今回使用した画像は、標準画像と呼ばれる、さまざまな画像処理で用いられる画像のうちの一つです。 色彩豊かで色変化がわかりやすかったり、細かい違いを比較しやすいような画像が用いられます [2]

この標準画像として、Lena Forsénさんという方の画像が非常によく用いられていたのですが、大人向けの雑誌由来の画像であったことや、ご本人の意向もあり、現在は使用すべきでないという風潮になっています [3]。 新しく画像処理をされる方はご注意ください。

matplotlibの使用

matplotlibという、プロットなどのための可視化ライブラリでも、OpenCVで扱う画像を表示させることができます [4]

Code
import matplotlib.pyplot as plt
img_plt = cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(img_plt)

注意点としては、OpenCVの画像は色のチャンネルがBGRであるのに対し [5]、matplotlibではRGBの順番で色を表現するため、変換が必要であることです。 色の変換のために、cvtColor関数を使用しました。一つ目の引数は元の画像で、二つ目に変換方法を指定します。 今回はBGRからRGBに変換したため、cv.COLOR_BGR2RGBを指定しました。2はToの意味で、左側に元の色、右側に変換後の色を指定します。 一覧はこちらから見られます。

matplotlibを使う利点は、

  • プロットと同じように画像を表示できる
  • プロットのように座標を確認したり、サイズが一目でわかる
  • matplotlib付属のツールバーを使えば、拡大や保存などが簡単にできる [6]

などが挙げられます。

個人的には、画像処理解析の際にはmatplotlibを用いて処理の途中経過の確認などをしており、あまりimshow関数は使用しておりません。

参考

[1]
[2]
“True color kodak images.” https://r0k.us/graphics/kodak/, 2024.
[3]
“Institute bans use of playboy test image in engineering journals | technology | the guardian.” https://www.theguardian.com/technology/2024/mar/31/tech-publisher-bans-playboy-centrefold-test-image-from-its-journals, 2024.
[4]
“Image tutorial — matplotlib 3.9.2 documentation.” https://matplotlib.org/stable/tutorials/images.html, 2024.
[5]
[6]
“Interactive figures — matplotlib 3.9.2 documentation.” https://matplotlib.org/stable/users/explain/figure/interactive.html, 2024.