아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다.
모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다.
그림 그리기는 객체나 얼굴을 인식해서 그 영역에 사각형을 그려서 표시 하거나 이름을 글씨로 표시 하는 등의 용도로 자주 활용
2.1 직선 그리기
cv2.line() : 직선을 그리는 함수
- cv2.line(img, start, end, color [, thickness, lineType]): 직선 그리기
- img : 그림 그릴 대상 이밎, Numpy 배열
- start : 선 시작 지점 좌표(x, y)
- end : 선 끝 지점 좌표(x, )
- color : 선 색상, (Blue, Green, Red), 0~255
- thickness=1 : 선 두께, 생략하면 1픽셀 적용
- lineType : 선 그리기 형식
- cv2.LINE_4 : 4 연결 선 알고리즘
- cv2.LINE_8 : 8 연결 선 알고리즘
- cv2.LINE_AA : 안티 앨리어싱(antialiasing, 계단 현상 없는 선)
2.2 사각형 그리기
cv2.rectangle() : 사각형 그리는 함수
어느 지점이든 시작 지점과 그 반대 지점을 사용한다. 사각형의 크기는 두 좌표의 차이만큼
- cv2.rectangle(img, start, end, color[, thickness, lineType]) : 사각형 그리기
- img : 그림 그릴 대상 이미지, Numpy 배열
- start : 사각형 시작 꼭짓점(x, y)
- end : 사각형 끝 꼭짓점(x, y)
- color : 색상(Blue, Green, Red)
- thickness : 선 두께
- -1 : 채우기
- lineType : 선 타입, cv2.line() 과 동일
2.3 다각형 그리기
cv2.polylines() : 다각형을 그리는 함수
- cv2.polylines(img, points, isClosed, color[, thickness, lineType]): 다각형 그리기
- img : 그림 그릴 대상 이미지
- points : 꼭짓점 좌표, Numpy 배열 리스트
- isClosed : 닫힌 도형 여부, True / False
- color : 색상(Blue, Green, Red)
- thickness : 선 두께, 채우기 효과(-1)은 지원하지 않음
- lineType : 선 타입, cv2.line() 과 동일
여러 개의 꼭짓점 좌표를 전달, 전달하는 좌표 형식은 Numpy 배열
2.4 원, 타원, 호 그리기
- cv2.circle(img, center, radius, color [, thickness, lineType]) : 원 그리기 함수
- img : 그림 대상 이미지
- center : 원점 좌표(x, y)
- radius : 원의 반지름
- color : 색상(Blue, Green, Red)
- thickness : 선 두께(-1 : 채우기)
- lineType : 선 타입, cv2.line() 과 동일
- cv2.ellipse(img, center, axes, angle, from, to, color[, thickness, lineType]) : 호나 타원 그리기 함수
- img : 그림 대상 이미지
- center : 원점 좌표(x, y)
- axes : 기준 축 길이
- angle : 기준 축 회전 각도
- from, to : 호를 그릴 시작 각도와 끝 각도
호를 표시하고자 할 때 시작 각도는 3시 방향에서 시작하여 시계 방향으로 돌면서 6시 방향에서 90도, 9시 방향에서 180도와 같은 방식으로 진행
2.5 글씨 그리기
cv2.putText() : 문자열을 이미지에 표시하는 함수
- cv2.putText(img, text, point, fontFace, fontSize, color [, thichness, lineType])
- img : 글씨를 표시할 이미지
- text : 표시할 문자열
- point : 글씨를 표시할 좌표(좌측 하단 기준)(x, y)
- fontFace : 글꼴
- cv2.FONT_HERSHEY_PLAIN : 산세리프체 작은 글꼴
- cv2.FONT_HERSHEY_SIMPLEX : 산세리프체 일반 글꼴
- cv2.FONT_HERSHEY_DUPLEX : 산세리프체 진한 글꼴
- cv2.FONT_HERSHEY_COMPLEX_SMALL : 세리프체 작은 글꼴
- cv2.FONT_HERSHEY_COMPLEX : 세리프체 일반 글꼴
- cv2.FONT_HERSHEY_TRIPLEX : 세리프체 진한 글꼴
- cv2.FONT_HERSHEY_SCRIPT_SIMPLEX : 필기체 산세리프 글꼴
- cv2.FONT_HERSHEY_SCRIPT_COMPLEX : 필기체 세리프 글꼴
- cv2.FONT_ITALIC : 이탤릭체 플래그
- fontSize : 글꼴 크기
- color, thickness, lineType : cv2.rectangle() 과 동일
REFERENCE
- 소스 코드 참고(저자 GitHub 주소)
GitHub - dltpdn/insightbook.opencv_project_python
Contribute to dltpdn/insightbook.opencv_project_python development by creating an account on GitHub.
github.com
- OpenCV 공식문서
OpenCV: OpenCV modules
OpenCV 4.7.0 Open Source Computer Vision
docs.opencv.org
'ML & DL > OpenCV' 카테고리의 다른 글
[OpenCV] 4. 이벤트 처리 (0) | 2023.02.15 |
---|---|
[OpenCV] 3. 창 관리 (0) | 2023.02.14 |
[OpenCV] 1. 이미지와 비디오 입출력 (0) | 2023.02.13 |
[OpenCV] 0. CV 프로젝트 진행을 위한 OpenCV (0) | 2023.02.13 |
[OpenCV] Error : OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'add' (0) | 2022.12.27 |
댓글