Tech & Development/Image Processing
[ OpenCV ] Basic 7 - 이미지 자르기 (Crop)
Theo (테오)
2022. 11. 21. 19:16
반응형
Image Crop
Crop은 이미지에서 필요한 이미지의 일부만 잘라내기 위해 사용합니다. 예를들어, 이미지에서 얼굴 영역만 찾아 잘라내는 기능을 개발한다면 Crop을 통해 잘라낼 수 있습니다.
Import packages
import cv2
import imutils
import matplotlib.pyplot as plt
Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의
def img_show(title='image', img=None, figsize=(8 ,5)):
plt.figure(figsize=figsize)
if type(img) == list:
if type(title) == list:
titles = title
else:
titles = []
for i in range(len(img)):
titles.append(title)
for i in range(len(img)):
if len(img[i].shape) <= 2:
rgbImg = cv2.cvtColor(img[i], cv2.COLOR_GRAY2RGB)
else:
rgbImg = cv2.cvtColor(img[i], cv2.COLOR_BGR2RGB)
plt.subplot(1, len(img), i + 1), plt.imshow(rgbImg)
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
else:
if len(img.shape) < 3:
rgbImg = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)
else:
rgbImg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(rgbImg)
plt.title(title)
plt.xticks([]), plt.yticks([])
plt.show()
Load Image
cv2_image = cv2.imread('asset/images/test_image.jpg', cv2.IMREAD_COLOR)
Crop
OpenCV를 통해 불러온 이미지는 Numpy Array 입니다. Numpy Array slicing 을 이용하여 이미지를 자를 수 있습니다.
cv2_image[0, 3:5]
Output:
array([[220, 223, 221],
[224, 233, 237]], dtype=uint8)
이미지에서 원하는 영역을 자르기 위해서는 [ startY:endY, startX:endX ] 형태로 Array slicing 합니다.
# Y1:Y2, X1:X2
face = cv2_image[500:800, 400:750]
img_show(["face"], [face])
반응형