Python

【Python】変数がNoneかどうか確認する方法

OpenCVで画像ファイルを開く場合では、ファイルがみつからない、日本語パスのためファイルが読み込めないなどのエラーが起きやすいため、画像の変数がNoneかどうかエラーチェックをしたくなります。

そのため、エラーチェックをしたプログラムを書いてみます。

(ダメな例)

import cv2

# OpenCVで画像ファイルを開く
img = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED)

if img == None:
    print("Load Error")
else:
    cv2.imshow("Image", img)
    cv2.waitKey(0)

このプログラムは一見良さそうで、実際に img == None のときは、正しく動作します。

しかしながら、 img != None のとき(画像ファイルが正しく読み込めたとき)は以下のような例外が発生します。

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

例外が発生しないようにするには、 == を使うのではなく、 is を使います。

import cv2

# OpenCVで画像ファイルを開く
img = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED)

if img is None:
    print("Load Error")
else:
    cv2.imshow("Image", img)
    cv2.waitKey(0)

他にも

if img != None:

としたい場合は

if img is not None:

のように != ではなく、 is not を使います。

コメント

タイトルとURLをコピーしました