[OpenCV] Drawing
OpenCV coordinate
OpenCV의 coordinate은 다음과 같다.
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()
Rectangle 그리기
cv2.rectangle()
파라미터 | 설명 |
---|---|
img | 이미지 파일 |
start | 시작 좌표 |
end | 종료 좌표 |
color | RBG |
thickness (int) | 두께 (pixel) |
img = cv2.rectangle(img, (400, 0), (510, 128), (0, 255, 0), 3)
원(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이면 다 채운 도형
타원(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)
다각형(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)
텍스트(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)