1.2 사각형
rectangle() 함수를 이용하여 사각형을 그릴 수 있습니다. rectangle은 모서리의 각이 모두 직각(90)인 사각형이므로 시작점(좌측 상단)과 종료점(우측 하단) 두곳의 좌표만 기입하여 도형을 그립니다.
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → img
parameter |
내용 |
img |
이미지 파일 |
pt1 |
시작점 좌표 (x, y) |
pt2 |
종료점 좌표 (x, y) |
color |
색상 (blue, green, red) 0 ~ 255 |
thickness |
선 두께 (default 1) |
lineType |
선 종류 (default cv.Line_8) - LINE_8 : 8-connected line - LINE_4 : 4-connecterd line - LINE_AA : antialiased line |
shift |
fractional bit (default 0) |
1.2.1 rectangle() 사각형 그리기
시작점의 좌표와 종료점 좌표를 기입하면 직각 사각형을 그릴 수 있습니다.
import numpy as np import cv2
# color 설정 blue_color = (255, 0, 0) green_color = (0, 255, 0) red_color = (0, 0, 255) white_color = (255, 255, 255)
# 모두 0으로 되어 있는 빈 Canvas(검정색) img = np.zeros((384, 384, 3), np.uint8) img = cv2.rectangle(img, (10, 10), (100, 100), blue_color, 3) img = cv2.rectangle(img, (110, 110), (200, 200), green_color, 3) img = cv2.rectangle(img, (210, 210), (350, 350), red_color, 3)
cv2.imshow(‘rectangle’,img) cv2.waitKey(0) cv2.destroyAllWindows() |
- 채워진 사각형
외곽선의 두께에 -1 값을 주게 되면 내부가 색칠된 사각형을 얻을 수 있습니다.
img = cv2.rectangle(img, (10, 10), (100, 100), blue_color, -1) img = cv2.rectangle(img, (110, 110), (200, 200), green_color, -1) img = cv2.rectangle(img, (210, 210), (350, 350), red_color, -1) |
1.2.2 clipLine() 사각형 내 직선
cv2.clipLine(imgRect, pt1, pt2) → retval, rpt1, rpt2
parameter |
내용 |
imgRect |
검출 하려는 직사각형 영역 |
pt1 |
직선의 시작점 |
pt2 |
직선의 종료점 |
retval |
결과. True : 사각형 내에 선이 있음, False : 사각형 내에 선이 없음 |
rpt1 |
사각형 안에 있는 선의 시작점 |
rpt2 |
사각형 안에 있는 선의 종료점 |
clipLine() 함수는 직사각형 영역 내에 직선이 존재하는 경우 시작 위치와 종료 위치의 좌표를 얻기 위해 사용 합니다. 직사각형을 그리고 직선을 그어서 교차점이 어디인지 확인해 보겠습니다.
결과 값이
True (50, 50) (350, 350) |
직선이 사각형 내에 있고 직선의 시작 위치와 종료 위치가 표시 됩니다.
- 도형 없이 실행
도형은 좌표를 알기 위해 시각화 한 것 뿐입니다. 도형을 주석처리하고 다시 실행해 봅니다.
도형으로 시각화 하지 않아도 사각형 내에 있는 선의 시작, 종료 좌표를 구할 수 있습니다.
- 도형과 관계 없는 좌표
도형은 위의 예처럼 그리고 실제 구하려는 사각형 내의 직선의 시작 위치는 변경을 해보겠습니다. 그러면 사각형 내에 있는 직선의 시작점과 종료점을 구하게 됩니다.
결과 값
True (60, 60) (350, 350) |
retval, pt1, pt2 = cv2.clipLine((50, 50, 350, 350), (60, 60), (350, 350))
clipLine() 함수에 있는 사각형 내부에 존재하는 직선의 시작점과 종료점 값을 잘 구하고 있습니다.
'Tensorflow > OpenCV' 카테고리의 다른 글
OpenCV 1. 도형 그리기 문자 (Python) (5) | 2019.04.01 |
---|---|
OpenCV 1. 도형 그리기 다각형 (Python) (0) | 2019.03.30 |
OpenCV 1. 도형 그리기 원 타원 (Python) (0) | 2019.03.28 |
OpenCV 1. 도형 그리기 점 선 (Python) (3) | 2019.03.25 |
anaconda에 opencv 설치하고 jupyter로 테스트 (9) | 2019.03.22 |