目次
概要
Jupyter Notebook では、Pillow の PIL Image 形式の画像は自動でインライン表示されますが、OpenCV で扱う NumPy 形式の画像は、配列の値がそのまま表示され、画像として表示されません。本記事では、Jupyter Notebook 上で NumPy 形式の画像をインラインで表示する方法について紹介します。
方法
- cv2.imencode() で、NumPy 形式の画像をエンコードされたバイト列に変換します。この関数は、変換が成功したかどうかの bool 値とエンコードされたバイト列を tuple で返します。
- バイト列を IPython.display.Image オブジェクトに変換します。
- 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)
コメント