728x90
반응형
지난번에 crop하는 방법까지 알아보았는데, 이 crop한 이미지를 그냥 잘라서 사용할수도 있지만 이 자른 이미지를 다른 이미지에 붙여 넣을 수 도 있다.
import cv2
import numpy as np
# 이미지 읽기
image_1 = cv2.imread('/my_dir/example_1.png')
# 좌표 설정
x1 = 50
y1 = 50
x2 = 100
y2 = 100
# crop하기
crop_image = image_1[y1:y2, x1:x2]
# 붙일 원본 이미지 읽기
image_2 = cv2.imread('/my_dir/example_2.png')
# 이미지의 크기
h, w, _ = image_2.shape
# crop 이미지를 resize
resized_crop = cv2.resize(crop_image, dsize=(24, 24))
# 크기
resized_crop_h, resized_crop_w, _ = resized_crop.shape
# 중앙 좌표
center_x = w / 2
center_y = h / 2
# 중앙 좌표에서 길이의 절반 만큼을 더하거나 빼서 좌표를 구함
c_x = resized_crop_w / 2
c_y = resized_crop_h / 2
new_x1 = int(center_x - c_x)
new_y1 = int(center_y - c_y)
new_x2 = int(center_x + c_x)
new_y2 = int(center_y + c_y)
# 좌표가 이미지 크기를 넘지 않도록 확인
new_x1 = max(new_x1, 0)
new_y1 = max(new_y1, 0)
new_x2 = min(new_x2, w)
new_y2 = min(new_y2, h)
# crop 이미지를 대상 이미지에 붙여넣기
image_2[new_y1:new_y2, new_x1:new_x2] = resized_crop
# 결과 이미지 저장 및 보기
cv2.imwrite('/my_dir/result_image.png', image_2)
cv2.imshow('Result Image', image_2)
cv2.waitKey(0)
cv2.destroyAllWindows()
오늘은 여기까지
728x90
반응형
'OpenCV' 카테고리의 다른 글
[OpenCV] 이미지 처리 (모자이크 & 블러) (0) | 2024.08.17 |
---|---|
[OpenCV] 이미지 처리 (합성2) (0) | 2024.08.17 |
[OpenCV] 이미지 처리 (crop) (0) | 2024.08.17 |
[OpenCV] 이미지 처리 (resize) (0) | 2024.08.17 |
[OpenCV] 이미지 처리 (밝기 조절) (0) | 2024.08.17 |