OpenCVのrectangleはBounding Boxを描画する際によく使う関数ですが、引数の数によって座標指定のフォーマットが違います。これを知らなくてえらいハマったので忘備録として残しておきます。
目次
思わず「マジかよー」となってしまったやつ。結論
検証環境:OpenCV v4.6.0
「Bounding Boxのフォーマットが違うだと……」??
import matplotlib.pyplot as plt
import cv2
import numpy as np
img = np.zeros((512,512,3), np.uint8)
img = cv2.rectangle(img, [80, 100, 400, 300], color=(255,0,0), thickness=4)
plt.imshow(img)
plt.show()
img = np.zeros((512,512,3), np.uint8)
img = cv2.rectangle(img, [80, 100], [400, 300], color=(255,0,0), thickness=4)
plt.imshow(img)
plt.show()
https://docs.opencv.org/4.x/d6/d6e/group__imgproc__draw.html#ga07d2f74cadcf8e305e810ce8eed13bc9
オーバーロードとして紹介されているが、フォーマットの違いについては書かれていない。
わかるかこんなの!!!
これで6時間溶かしました(だからOpenCVは嫌なんだ)