OpenCV Python 명령어로 이미지 잘라내기
[목차]
- Python 코드
- 내용 설명
- 이미지 데이터 구조
- 이미지 자르기(Crop) 예시
Python 코드
import cv2
# 이미지 불러오기
image = cv2.imread('이미지 경로')
# 이미지 자르기
# image[y좌표 시작 지점: y좌표 종료 지점, x좌표 시작 지점: x좌표 종료 지점]
# 잘라낼 이미지 좌측 상단 xy좌표가 (2, 1), 우측 하단 xy좌표가 (17, 14)인 경우
cropped_image = image[1:14, 2:17]
내용 설명
이미지 데이터 구조
import cv2
image = cv2.imread('이미지 경로')
위 예시 코드를 실행하면 해당 이미지가 image라는 변수에 저장되며 이때, image는 "numpy.ndarray" 형식이다.
해당 이미지가 위와 같이 가로 19 픽셀, 세로 15 픽셀을 가진 이미지라고 한다면 각 픽셀마다 자신의 색상 정보를 BGR 3채널로 가지고 있다.
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
실제 화면에 출력할 때는 RGB 순으로 표기해야 하므로 위와 같이 채널 순서를 변경해주어야 한다.
이렇게 변경된 값은 아래와 같다.
[[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [255,0,0], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [255,0,0], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]],
[[0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255], [0,0,255]]]
즉, 해당 이미지 데이터는 각 픽셀 좌표에 대응하는 NDArray 위치에 색상 정보 담고 있으며 이를 시각화하여 표현하면 아래와 같다.
이미지 자르기(Crop) 예시
이미지에서 자르고자 하는 영역의 좌표값을 이용하여 NDArray형태에서 슬라이싱을 하여 이미지를 잘라낼 수 있다.
imgae[y좌표 시작 지점: y좌표 종료 지점, x좌표 시작 지점: x좌표 종료 지점]
[예시 1]
image[0:5, 0:5]
[예시 2]
image[1:14, 2:17]
'Data Science & AI > Computer Vision' 카테고리의 다른 글
[OpenCV] EasyOCR 설치 후 imshow 오류 해결 (0) | 2023.12.12 |
---|
댓글