LoginSignup
1
1

More than 3 years have passed since last update.

Jupyter上での画像表示方法を理解する(OpenCVのimshow/matplotlibの活用)

Last updated at Posted at 2020-03-13

はじめに

 この記事では、Jupyter上で画像を表示させる方法及び、引数やリストを変えて出力画像と対応している機能を理解しようとする記事です。
 小職は機械学習初学者ですので、ご意見・間違いあればご指摘頂けると大変幸甚です。

要約

  • 画像をインライン表示させる
  • resizeモジュールを使ってモザイクをかける
  • 透過率を上げる

画像をインライン表示させる

pic.ipynb

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('012.JPG') #読み込みたい任意の画像をpic.ipynbと同フォルダに入れておきましょう。
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(1,1,1)
ax.imshow(img)
ax.axis("off")

012.png

まずはベーシックに画像を表示させました。
ここで、(-0.5,719.5,719.5,-0.5)とは、左下の座標が(-0.5,719.5)で、右上の座標が(719.5, -0.5)であることを示しています。
画像の表示は数学で習うxy軸方向と異なっており、左上に原点が来ているので、下記のようになります。

014.png

画像のサイズを確認

pic.ipynb
img.shape
(720, 720, 3)

(縦解像度、横解像度、チャンネル数)を表しますので、720×720の3チャンネル(=RGBのカラー)ということが分かりますね。
 注意ポイントとしては、これをxyで表すと(y、x、チャンネル数)となることです。

 

画像の座標及びその位置の画像を表示

pic.ipynb
img[0,0]
array([162, 127,  77], dtype=uint8)

 原点位置(0,0)のRGB値は(162,127,77)であることが分かりました。さらに、表示を行うと以下のようになります。

pic.ipynb

fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)
ax.imshow(img[0:1,0:1])#表示し値座標を範囲で指定する
ax.axis("on")

015.png

(0,0)座標を表示したい場合でも、[0:1,0:1]のように範囲で指定しなければエラーが出てしまいますので、注意しましょう。

x、y座標に注意して表示する

pic.ipynb
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)
ax.imshow(img[0:720,0:10])
ax.axis("on")

img[0:720,0:10]と指定すると、y:0~720、x:0~10で表示するため、縦長になります。x、y座標の頭があると逆になりますので、注意しましょう。下記画像では縦長画像になっていますね。

018.png

resizeモジュールを使ってモザイクをかける

pic.ipynb
img_re= cv2.resize(img, dsize=None, fx=0.1, fy =0.1)
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(1,1,1)
ax.imshow(img_re)
ax.axis("off")

 cv2.resize()モジュールにより画素数を1/10にすることで、モザイクをかけます。
 resizeにおける引数で、fx及びfyがx,yの倍率になります。今回は0.1(=10%)とすることで、画素数を1/10にしました。

016.png

透過率を上げる

pic.ipynb
fig, ax = plt.subplots(facecolor="w")
ax.imshow(img, alpha=0.5)

plt.show()

imshowモジュールのalphaへの引数を0~1の範囲で指定して透過率を決めることで、薄い色合いへ変化させることができます。

017.png

終わりに

 画像を取り扱って処理をしていこうと思うと、今回の操作は基本的なものです。自分自身で手を動かすことで実感を得ておくことが非常に大事だと思いました。

プログラム全文は下記に格納しています。
https://github.com/Fumio-eisan/jupyter_pic20200313

1
1
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
1
1