2 분 소요

OpenCV coordinate

OpenCV의 coordinate은 다음과 같다.

image

Line 그리기

cv2.line()

파라미터 설명
img 이미지 파일
start 시작 좌표
end 종료 좌표
color RBG
thickness (int) 두께 (pixel)
img = np.zeros((512, 512, 3), np.uint8)
img = cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
plt.imshow(img)
plt.show()

image

Rectangle 그리기

cv2.rectangle()

파라미터 설명
img 이미지 파일
start 시작 좌표
end 종료 좌표
color RBG
thickness (int) 두께 (pixel)
img = cv2.rectangle(img, (400, 0), (510, 128), (0, 255, 0), 3)

image

원(Circle) 그리기

cv2.circle()

파라미터 설명
img 이미지 파일
center 원의 중심(x, y)
radian 반지름
color RBG
thickness (int) 두께 (pixel)
lineType 선의 형태
shift 좌표에 대한 비트 시프트
img = cv2.circle(img, (450, 50), 50, (0, 0, 255), -1)      # 선 두께가 -1이면 다 채운 도형

image

타원(Ellipse) 그리기

cv2.ellipse()

파라미터 설명
img 이미지 파일
center 타원의 중심(x, y)
axes 중심에서 가장 큰 거리와 작은 거리
angle 타원의 기울기 각
startAngle 타원의 시작 각도
둥Angle 타원의 종료 각도
color RBG
thickness (int) 두께 (pixel)
lineType 선의 형태
shift 좌표에 대한 비트 시프트
img = cv2.ellipse(img, (256, 256), (150, 30), 0, 0, 180, (0, 255, 0), -1)
img = cv2.ellipse(img, (256, 256), (150, 50), 45, 0, 360, (255, 255, 255), 2)

image

다각형(Polygon) 그리기

cv2.polylines()

파라미터 설명
img 이미지 파일
pts (array) 연결할 꼭짓점 좌표
isClosed 닫힌 도형 여부
color RGB
thickness 선 두께
  • 이미지에 표현하기 위해 점 좌표를 3차원 행렬로 변환
    • 변환이전과 이후의 행렬 갯수는 동일해야 함
    • -1은 원본에 해당하는 값을 그대로 유지
pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32) # 4x2 행렬
pts = pts.reshape(-1, 2, 1) # 4x2x1 행렬로 reshape
img = cv2.polylines(img, [pts], True, (0, 150, 250), 4)

pts = np.array([[10, 400], [40, 400], [50, 500], [20, 450]], np.int32) # 4x2 행렬
pts = pts.reshape(-1, 1, 2) # 4x1x2 행렬로 reshape
img = cv2.polylines(img, [pts], True, (40, 10, 250), 10)

image

텍스트(Text) 그리기

cv2.putText()

파라미터 설명
img 이미지 파일
text 표시할 문자열
org 문자열이 표시될 위치. 문자열의 bottom-left corner 점
fontFace 폰트 타입. (CV2.FONT_XXX)
color 폰트 색상
thickness 글자의 굵기
lineType 글자 선 형태
bottomLeftOrigin 영상의 원점 좌표 설정(True: 좌하단), False: 좌상단
  • 문자열 폰트 옵션

    옵션 설명
    cv2.FONT_HERSHEY_SIMPLEX 0 중간 크기 산세리프 폰트
    cv2.FONT_HERSHEY_PLAIN 1 작은 크기 산세리프 폰트
    cv2.FONT_HERSHEY_DUPLEX 2 2줄 산세리프 폰트
    cv2.FONT_HERSHEY_COMPLEX 3 중간 크기 세리프 폰트
    cv2.FONT_HERSHEY_TRIPLEX 4 3줄 세리프 폰트
    cv2.FONT_HERSHEY_COMPLEX_SMALL 5 COMPLEX 보다 작은 크기
    cv2.FONT_HERSHEY_SCRIPT_SIMPLEX 6 필기체 스타일 폰트
    cv2.FONT_HERSHEY_SCRIPT_COMPLEX 7 복잡한 필기체 스타일
    cv2.FONT_ITALIC 16 이탤릭체를 위한 플래그
img = cv2.putText(img, 'OpenCV', (10, 500), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 255, 255), 5)

image