OpenCV – NumPy 形式の画像を Jupyter Notebook にインライン表示する方法

目次

概要

Jupyter Notebook では、Pillow の PIL Image 形式の画像は自動でインライン表示されますが、OpenCV で扱う NumPy 形式の画像は、配列の値がそのまま表示され、画像として表示されません。本記事では、Jupyter Notebook 上で NumPy 形式の画像をインラインで表示する方法について紹介します。

方法

  1. cv2.imencode() で、NumPy 形式の画像をエンコードされたバイト列に変換します。この関数は、変換が成功したかどうかの bool 値とエンコードされたバイト列を tuple で返します。
  2. バイト列を IPython.display.Image オブジェクトに変換します。
  3. IPython.display.Image オブジェクトを IPython.display.display() で表示します
In [1]:
import cv2
from IPython import display


def imshow(img, format=".jpg", **kwargs):
    """ndarray 配列をインラインで Notebook 上に表示する。"""
    img = cv2.imencode(format, img)[1]
    img = display.Image(img, **kwargs)
    display.display(img)


img = cv2.imread("sample.jpg")
imshow(img)

IPython.display.Image オブジェクトを作成する際に width または height を指定すると、画像は (width, height) に収まるようにリサイズして表示されます。大きい画像を表示したい場合に、これらのパラメータを指定するとよいでしょう。

In [2]:
imshow(img, width=400)

コメント

コメントする

目次