728x90
반응형
7. 이미지 자르기
불러온 이미지에서 일부분을 잘라냈을 때 잘라낸 영역을 새로운 윈도우(창)에 표시하거나 기존 윈도우에 표시할 수 있다. 영역을 자를 때에는 함수를 이용하지 않고 자르는 지점의 위치로 나타낸다.
crop = image[a:b, n:m]
영역을 잘라서 새로운 윈도우에 표시
먼저 사용할 이미지의 정보를 확인하면 다음과 같다.
import cv2
img = cv2.imread("img.jpg")
img.shape
(391, 640, 3)
위의 이미지에서 세로 기준 100:400까지, 가로 기준 200:400까지 잘라 새 윈도우에 표시하면 다음과 같다.
import cv2
img = cv2.imread("img.jpg")
# 이미지 자르기
crop = img[100:200, 200:400]
# 원본 이미지와 함께 출력하기
cv2.imshow("image", img)
cv2.imshow("crop", crop)
cv2.waitKey(0)
cv2.destroyAllWindows()
영역을 잘라서 기존 윈도우에 표시
영역을 잘라서 기존 윈도우에 표시할 때는 위와 같은 방법으로 이미지를 잘라 자른 이미지를 표시할 위치에 대입하면 된다.
import cv2
img = cv2.imread("img.jpg")
# 이미지 자르기
crop = img[100:200, 200:400]
# 이미지 표시할 위치 선정
img[100:200, 400:600] = crop
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
8. 이미지 대칭
불러온 이미지를 좌우로 또는 상하로, 상하좌우로 대칭하기 위해서는 cv2.flip() 함수를 이용해 대칭할 수 있다.
cv2.flip(image, flipCode)
flipCode는 대칭 옵션으로 -1, 0, 1 중 하나의 값을 갖는다.
- 상하 반전 (Vertical) : cv2.flip(image, 0)
- 좌우 반전 (Horizontal) : cv2.flip(image, 1)
- 상하좌우 반전 : cv2.flip(image, -1)
좌우 반전
# horizontal
import cv2
img = cv2.imread("img.jpg")
flip_horizontal = cv2.flip(img, 1)
cv2.imshow("image", img)
cv2.imshow("horizontal", flip_horizontal)
cv2.waitKey(0)
cv2.destroyAllWindows()
상하 반전
# vertical
import cv2
img = cv2.imread("img.jpg")
flip_vertical = cv2.flip(img, 0)
cv2.imshow("image", img)
cv2.imshow("vertical", flip_vertical)
cv2.waitKey(0)
cv2.destroyAllWindows()
상하좌우 반전
# both
import cv2
img = cv2.imread("img.jpg")
flip_both = cv2.flip(img, -1)
cv2.imshow("image", img)
cv2.imshow("both", flip_vertical)
cv2.waitKey(0)
cv2.destroyAllWindows()
9. 이미지 회전
이미지를 회전시키기 위해선 cv2.rotate() 함수를 사용하여 시계방향으로 90도, 180도, 시계 반대반향으로 90도(시계 방향 270도) 회전시킬 수 있다.
cv2.rotate(image, rotateCode)
rotate Code의 경우 회전 옵션을 의미한다.
- 시계 방향 90도 : cv2.ROTATE_90_CLOCKWISE
- 180도 : cv2.ROTATE_180
- 반시계 방향 90도 : cv2.ROTATE_90_COUNTERCLOCKWISE
시계 방향 90도
# 시계 방향 90도
import cv2
img = cv2.imread("img.jpg")
rotate_90 = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
cv2.imshow("image", img)
cv2.imshow("rotate_90", rotate_90)
cv2.waitKey(0)
cv2.destroyAllWindows()
180도
# 180도
import cv2
img = cv2.imread("img.jpg")
rotate_180 = cv2.rotate(img, cv2.ROTATE_180)
cv2.imshow("image", img)
cv2.imshow("rotate_180", rotate_180)
cv2.waitKey(0)
cv2.destroyAllWindows()
반시계 방향 90도(시계 방향 270도)
# 반 시계 방향 90도
import cv2
img = cv2.imread("img.jpg")
rotate_270 = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow("image", img)
cv2.imshow("rotate_270", rotate_270)
cv2.waitKey(0)
cv2.destroyAllWindows()
728x90
반응형
'Study > ML | DL' 카테고리의 다른 글
[Python] OpenCV를 이용한 반 자동 문서스캐너 구현하기1 - Mouse event (0) | 2023.05.25 |
---|---|
[Python] OpenCV를 이용한 이미지/영상 처리 - 이미지 변형(흑백, 흐림, 원근) (1) | 2023.05.24 |
[Python] OpenCV를 이용한 이미지/영상 처리 - 크기 조정 (0) | 2023.05.18 |
[Python] OpenCV를 이용한 이미지/영상 처리 - 파일 저장 (0) | 2023.05.17 |
[Python] OpenCV를 이용한 이미지/영상 처리 - 텍스트 (0) | 2023.05.12 |