Skip to main content

OpenCV Draw figure


Ref: https://docs.opencv.org/master/

Common options

  • @param img: np.ndarray
  • @param color: tuple (B, G, R)
  • @param thickness: int -1 인 경우 도형 내부를 채움
  • @param lineType
    • cv.FILLED
    • cv.LINE_4
    • cv.LINE_8
    • cv.LINE_AA
  • @param shift: int 모든 좌표를 (x, y) -> (x·2^(-shift), y·2^(-shift))로 변환

Line

img = cv.arrowedLine(img, pt1, pt2, color, thickness=1, line_type=cv.LINE_8, shift=0, tipLength=0.1)
img = cv.line(img, pt1, pt2, color, thickness=1, lineType=cv.LINE_8, shift=0)
  • @param pt1, pt2: tuple (x, y) start, end

Rectangle

img = cv.rectangle(img, pt1, pt2, color, thickness=1, lineType=cv.LINE_8, shift=0)
  • @param pt1, pt2: tuple (x, y) top-left, bottom-right

Polygone

img = cv.polylines(img, pts, isClosed, color, thickness=1, lineType=cv.LINE_8, shift=0)
img = cv.fillPoly(img, pts, color, lineType=cv.LINE_8, shift=0, offset=(0,0))
  • @param pts: list [np.ndarray([[],], dtype=np.int32),] 꼭지점으로 이루어진 2차원 배열들의 리스트, 배열 수만큼 도형 생성
  • @param isClosed: bool True : 시작점과 끝점 연결, False : 시작점과 끝점 연결 안함
  • @param offset: tuple (x, y)

Ellipse

img = cv.circle(img, center, radius, color, thickness=1, lineType=cv.LINE_8, shift=0)
img = cv.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=1, lineType=cv.LINE_8, shift=0)
img = cv.ellipse(img, box, color, thickness=1, lineType=cv.LINE_8)
pts = cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta)
  • @param center
  • @param radius
  • @param axes
  • @param angle
  • @param startAngle
  • @param endAngle
  • @param box
  • @param delta

Marker

img = cv.drawMarker(img, position, color, markerType=cv.MARKER_CROSS, markerSize=20, thickness=1, line_type=cv.LINE_8)
  • @param position: tuple (x, y)
  • @param markerType
    • cv.MARKER_CROSS
    • cv.MARKER_TILTED_CROSS
    • cv.MARKER_STAR
    • cv.MARKER_DIAMOND
    • cv.MARKER_SQUARE
    • cv.MARKER_TRIANGLE_UP
    • cv.MARKER_TRIANGLE_DOWN

Text

img = cv.putText(img, text, org, fontFace, fontScale, color, thickness=1, lineType=cv.LINE_8, bottomLeftOrigin=False)
  • @param text: string
  • @param org: tuple 텍스트 위치
  • @param fontFace
    • cv.FONT_HERSHEY_SIMPLEX
    • cv.FONT_HERSHEY_PLAIN
    • cv.FONT_HERSHEY_DUPLEX
    • cv.FONT_HERSHEY_COMPLEX
    • cv.FONT_HERSHEY_TRIPLEX
    • cv.FONT_HERSHEY_COMPLEX_SMALL
    • cv.FONT_HERSHEY_SCRIPT_SIMPLEX
    • cv.FONT_HERSHEY_SCRIPT_COMPLEX
    • cv.FONT_ITALIC
  • @param fontScale: float 기본 크기에 곱할 배율
  • @param bottomLeftOrigin: bool True : bottom-left, False : top-left