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 を使います。