728x90
반응형
문제점 및 증상
특정 좌표가 지정된 다각형 영역에 속한지 확인하여 위하여 cv2.pointPolygonTest() 함수를 이용하던 중 다음과 같은 오류가 발생하였습니다.
File "d:\Dev\VisionAI\vpc_multi\src\cmd_detector.py", line 163, in
process_detection_datas(frame_no, classes, scores, boxes)
File "d:\Dev\VisionAI\vpc_multi\src\cmd_detector.py", line 57, in process_detection_
if (cv2.pointPolygonTest(_polygon_pedestrain, pt_center, True) >= 0):
cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'pointPolygonTest'
> Overload resolution failed:
> - Can't parse 'pt'. Sequence item with index 0 has a wrong type
> - Can't parse 'pt'. Sequence item with index 0 has a wrong type
오류가 발생한 부분의 코드는 다음과 같았습니다.
pt_center = ((left + int(width / 2)), (top + int(height / 2)))
if (cv2.pointPolygonTest(_polygon_pedestrain, pt_center, True) >= 0):
pedestrain_count += 1
원인분석 및 해결
오류의 내용으로 봤을 때 두 번째 파라미터의 데이터 형이 달라서 발생한 것으로 추측되는데, int 형으로 맞추기 위하여 폭과 높이를 강제로 int형으로 변환하여 처리하였지만, 결과적으로 pt_center는 int형이 아니었습니다.
그래서 다음과 같이 수정하여 문제를 해결하였습니다.
pt_center = (int(left + (width / 2)), int(top + (height / 2)))
if (cv2.pointPolygonTest(_polygon_pedestrain, pt_center, True) >= 0):
pedestrain_count += 1
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 객체의 속성 관련 정리 (0) | 2022.05.28 |
---|---|
[Python] ubuntu 20.04에서 venv에서 OpenCV 연동하기 (0) | 2022.05.24 |
[Python] 윈도우에서 cython_bbox 설치 오류: "ERROR: Failed building wheel for cython_bbox windows" (0) | 2022.05.18 |
[Python] 날짜 문자열을 timestamp로 변환하기 (0) | 2022.05.13 |
[Python] class의 재미난 특징 (0) | 2022.05.12 |