관리 메뉴

솜씨좋은장씨

[Python] OpenCV TypeError: rectangle() missing required argument 'rec' (pos 2) 해결방법 본문

Programming/Python

[Python] OpenCV TypeError: rectangle() missing required argument 'rec' (pos 2) 해결방법

솜씨좋은장씨 2021. 8. 23. 12:00
728x90
반응형

opencv를 활용하여 오랜만에 사각형을 그리려고 하는데

pt1 = (bounding_box['left'], bounding_box['top'])
pt2 = (bounding_box['right'], bounding_box['bottom'])
background_img = cv2.rectangle(img=background_img, pt1=pt1, pt2=pt2, color=blue_color, thickness=2)
--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-217-8517b6d4b847> in <module>
     15         pt1 = (bounding_box['left'], bounding_box['top'])
     16         pt2 = (bounding_box['right'], bounding_box['bottom'])
---> 17         background_img = cv2.rectangle(img=background_img, pt1=pt1, pt2=pt2, color=blue_color, thickness=2)
     18 
     19 plt.imshow(background_img)

TypeError: rectangle() missing required argument 'rec' (pos 2)

위와 같이 TypeError: rectanlge() missing required argument 'rec' (pos 2) 오류가 발생했습니다.

# 원인

cv2.rectangle의 값 중 pt1 (왼쪽 위 점), pt2 (오른쪽 아래 점) 에 들어가는 값에

int 가 아닌 str 또는 float의 값이 들어갔을 경우에 발생 합니다.

즉, 입력받는 값의 형식이 반드시 int 형이어야 합니다.

# 해결방법

이를 해결하는 방법은 pt1과 pt2의 값을 미리 int 형식인지 확인해보고 그렇지 않을 경우

int 형식으로 바꾸어주면 됩니다.

pt1 = (int(bounding_box['left']), int(bounding_box['top']))
pt2 = (int(bounding_box['right']), int(bounding_box['bottom']))
background_img = cv2.rectangle(img=background_img, pt1=pt1, pt2=pt2, color=blue_color, thickness=2)

위와 같이 pt1과 pt2의 값을 다 int 형으로 바꾸어 주면 문제없이 동작하는 것을 볼 수 있습니다.

 

읽어주셔서 감사합니다.

Comments