이미지에 여러가지 선과 글씨를 넣는 방법이다.
기본적으로 색을 표현할때 타 라이브러리는 다 RGB 의 형식으로 되어있는데 반해,
OpenCV 는 특이하게 BGR 의 형식으로 되어있어 , 색을 표현할때 형식에 맞춰야하니 주의한다.
1. 직선그리기
1
2
3
4
5
6
7
8
9
10
11
|
import cv2
import numpy as np
image = cv2.imread('data/images/mark.jpg')
cv2.imshow('img', image)
imageLine = image.copy()
# 선그리기
cv2.line(imageLine, (322,179), (400,183), (0,255,0), thickness=2, lineType=cv2.LINE_AA)
cv2.imshow('image line', imageLine)
|
cs |
* cv2.line( img, start, end, color, thickness )
- img : 그림을 그릴 이미지 파일
- start : 선이 시작되는 시작점 좌표 ex) ( 0, 0 )
- end : 선이 종료되는 종료 좌표 ex) (400,400)
- color : 선의 색 *BGR 형식 ex) ( 255, 0, 0 ) <-- blue
- thickness : 선의 두께
- lineType : cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
2. 원 그리기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import cv2
import numpy as np
image = cv2.imread('data/images/mark.jpg')
cv2.imshow('img', image)
imagecircle = image.copy()
cv2.circle(imageCircle,(350,200), 150, (255,0,0), thickness=3, lineType=cv2.LINE_AA)
cv2.imshow('image circle', imageCircle)
cv2.waitKey(0)
cv2.destroyAllWindow()
|
cs |
*cv2.circle(img, center, radian, color, thickness)
- img : 그림을 그릴 이미지 파일
- center : 원의 중심 좌표 ex) ( 350, 200 )
- radian : 원의 반지름
- color : BGR 형태의 색깔
- thickness = 선의 두께 ( -1 설정시 원의 안쪽으로 색이 채워짐 )
- lineType : cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA 중 선택
3. 타원그리기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import cv2
import numpy as np
image = cv2.imread('data/images/mark.jpg')
cv2.imshow('img', image)
imageellipse = image.copy()
cv2.ellipse(imageELLipse, (360,200), (100,170), 45, 0, 360, (0,255,0), thickness=2 )
cv2.ellipse(imageELLipse, (360,200), (100,170), 135, 0, 360, (0,0,255), thickness=2 )
cv2.imshow('image ellipse', imageELLipse)
cv2.waitKey(0)
cv2.destroyAllWindow()
|
cs |
* cv2.ellipse( img, center, axes, angle, startAngle, endAngle, color, thickness )
- img – 그림을 그릴 이미지 파일
- center – 타원의 중심좌표
- axes – 중심에서 가장 큰 거리와 작은 거리 ex) ( 100, 170 )
- angle – 타원의 기울기 각
- startAngle – 타원의 시작 각도
- endAngle – 타원이 끝나는 각도
- color – 타원의 색
- thickness – 선 두께 -1이면 안쪽을 채움
4. 사각형 그리기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import cv2
import numpy as np
image = cv2.imread('data/images/mark.jpg')
cv2.imshow('img', image)
imageRectangle = image.copy()
cv2.rectangle(imageRectangle, (208,55), (450,355), (255,0,0), thickness=3)
cv2.imshow('rectangle', imageRectangle)
cv2.waitKey(0)
cv2.destroyAllWindow()
|
cs |
* cv2.rectangle( img, start, end, color, thickness )
- img : 그림을 그릴 이미지
- start : 시작 좌표 ( 왼쪽 윗 모서리 좌표 )
- end : 종료 좌표 ( 오른쪽 아래 모서리 좌표 )
- color : BGR형태의 Color
- thickness (int) : 선의 두께
5. Text 넣기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import cv2
import numpy as np
image = cv2.imread('data/images/mark.jpg')
cv2.imshow('img', image)
imageText = image.copy()
cv2.putText(imageText, 'Mark Zuckerberg', (205,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0),2 )
cv2.imshow('text', imageText)
cv2.waitKey(0)
cv2.destroyAllWindows()
|
cs |
* cv2.putText(img, text, org, font, fontScale, color, thickness)
- img : 문자를 넣을이미지
- text : 넣을 문자열
- org : 문자열이 시작될 위치 좌표 ex) (205,50) , 문자열의 왼쪽 아래 모서리점.
- font : font 타입 , cv2.FONT_*****
- fontScale : font Size
- color : font color
- thickness : 문자열 선 두께
'IT 프로그래밍 관련 > OpenCV' 카테고리의 다른 글
OpenCV threshold, 이미지형태 변환(dilate,erode, opening, closing) (0) | 2021.04.22 |
---|---|
OpenCV 비디오파일 열기, 내 캠으로 비디오파일 저장 (0) | 2021.04.21 |
OpenCV Image resize , Crop (0) | 2021.04.20 |
OpenCV 이미지 열기, 화면 표시 방법, 이미지 저장 (0) | 2021.04.20 |
python에서의 OpenCV 활용 (0) | 2021.04.20 |
댓글