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() 사각형 그리기


시작점의 좌표와 종료점 좌표를 기입하면 직각 사각형을 그릴 수 있습니다.


opencv_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()


opencv_rectangle


- 채워진 사각형


외곽선의 두께에 -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)



opencv_rectangle



1.2.2 clipLine() 사각형 내 직선


cv2.clipLine(imgRect, pt1, pt2) → retval, rpt1, rpt2


parameter

 내용

 imgRect

 검출 하려는 직사각형 영역

 pt1

 직선의 시작점

 pt2

 직선의 종료점

 retval

 결과. True : 사각형 내에 선이 있음, False : 사각형 내에 선이 없음

 rpt1

 사각형 안에 있는 선의 시작점

 rpt2

 사각형 안에 있는 선의 종료점


clipLine() 함수는 직사각형 영역 내에 직선이 존재하는 경우 시작 위치와 종료 위치의 좌표를 얻기 위해 사용 합니다직사각형을 그리고 직선을 그어서 교차점이 어디인지 확인해 보겠습니다.


opencv_rectangle


opencv_rectangle


결과 값이

True (50, 50) (350, 350)


직선이 사각형 내에 있고 직선의 시작 위치와 종료 위치가 표시 됩니다.

 

- 도형 없이 실행


도형은 좌표를 알기 위해 시각화 한 것 뿐입니다. 도형을 주석처리하고 다시 실행해 봅니다.


opencv_rectangle


opencv_rectangle


도형으로 시각화 하지 않아도 사각형 내에 있는 선의 시작, 종료 좌표를 구할 수 있습니다.


- 도형과 관계 없는 좌표


도형은 위의 예처럼 그리고 실제 구하려는 사각형 내의 직선의 시작 위치는 변경을 해보겠습니다그러면 사각형 내에 있는 직선의 시작점과 종료점을 구하게 됩니다.


opencv_rectangle


opencv_rectangle


결과 값

True (60, 60) (350, 350)


retval, pt1, pt2 = cv2.clipLine((50, 50, 350, 350), (60, 60), (350, 350))

clipLine() 함수에 있는 사각형 내부에 존재하는 직선의 시작점과 종료점 값을 잘 구하고 있습니다.



+ Recent posts