본문 바로가기
ML & DL/OpenCV

[OpenCV] 2. 그림, 글씨 그리기

by 홍월이_ 2023. 2. 14.

아래 내용은 파이썬으로 만드는 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

 

댓글