以下のようなコードでbounding boxを描画しようとするとエラーになった。
img = Image.open(img_path) draw = ImageDraw.Draw(img) draw.rectangle((bbox[0][0], bbox[0][1], bbox[2][0], bbox[2][1]), outline=(255, 0, 0), width=2)
原因はImage.openで読み込んだjpeg画像の中にgrayscale のものが混ざっていたため。
その場合、ImageのmodeがL(grayscale)になり、RGBでbounding boxの色を指定するとエラーになる。
以下のコードでRGBに変換すると直った。
if img.mode != "RGB": img = img.convert("RGB")
参考: