AI/OpenCV

[OpenCV] 이미지 편집하기 (Editing Image)

LiDARian 2021. 10. 4. 13:00
반응형


이미지 리사이즈, 자르기 (Resize, Crop)

 

보통 OpenCV에서 이미지의 크기를 바꿀 때에는 resize()함수를 사용한다.

자르는 경우에는 따로 함수를 쓰지 않고, 이미지가 행렬로 표현되어있는 점을 이용해 리스트 슬라이싱을 행한다.

 

import cv2
import numpy as np
 
img = cv2.imread("Resources/lambo.png")
print(img.shape)    # np.shape는 행렬의 크기 및 차원을 표현한다.
 
imgResize = cv2.resize(img,(1000,500))  # width, height 순서로 표현한다.
print(imgResize.shape)
 
imgCropped = img[0:200,200:500] # height는 0-200, width는 200-500으로 해서 자른다.
 
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Cropped",imgCropped)
 
cv2.waitKey(0)  # Ctrl + Z 입력이 들어올 때까지 창을 유지한다.

선, 원, 사각형, 글씨 넣기 (Line, Circle, Rectangle, Text Input)

 

numpy 라이브러리를 통해 아무 데이터가 없는 빈 512*512행렬을 만들고, 그 위에
line, rectangle, circle, putText 함수를 통해서 도형과 텍스트를 입력한다.

 

import cv2
import numpy as np
 
img = np.zeros((512,512,3),np.uint8) # 검은색 512*512 칸 생성, height, width 순으로 shape이 저장되어있다.
print(img)  # 출력

cv2.line(img, (0,0), (img.shape[1], img.shape[0]), (0, 255, 0), 3)  # 0,0에서 이미지의 맨 오른쪽 아래까지(width, height 순), 초록색(BGR순), 두께 3
cv2.rectangle(img, (0,0), (250,350), (0,0,255), 2)  # 0,0에서 250,350 두 꼭짓점으로 그려지는 붉은색 사각형, 두께 2
cv2.circle(img, (400,50), 30, (255,255,0), 5)   # 400,50을 중심으로 30 반지름으로 그려지는 원, 두께 5
cv2.putText(img," OPENCV ", (300,200), cv2.FONT_HERSHEY_COMPLEX, 1, (0,150,0), 1)   # 중심 위치 300,200인 폰트가 FONT_HERSHEY_COMPLEX인, 크기 1의, 약한 초록색의 ,두께 3인 글씨
 
cv2.imshow("Image",img)
cv2.waitKey(0)
반응형