<TIL - 0041> AI 이미지처리

개발일지·2023년 6월 8일
0

til

목록 보기
41/43
post-thumbnail


1. 이미지 처리 기초

  • 이미지 위에 도형 그리기
# 사각형 그리기
cv2.rectangle(img, pt1=(x1, y1), pt2=(x2, y2), # 사각형의 두 점 좌표
				color=(B, G, R), # 0 ~ 255
				thickness=2) # 선의 두께, 음수로 쓰면 안으로 채워진다.
                
# 원 그리기
cv2.circle(img, center=(x, y), # 원 중심 좌표
			radius=100, # 반지름 값
            color=(B, G, R),
            thickness=2)
            
cv2.imshow('result', img)
  • 이미지 크롭
# 크롭 : y,x 순으로 쓴다
cropped_img(변수명)=img[y1:y2,x1:x2]

cv2.imshow('cropped', cropped_img)

  • 이미지 리사이징
# 기본 리사이징
img_resized1 = cv2.resize(img, (500, 250)) # w(가로), h(세로)

cv2.imshow('resize1', img_resized1)

# 비율 유지 리사이징
img_resized2 = cv2.resize(img, dsize=(500, int(h / w * 500)))

cv2.imshow('resize2', img_resized2)

  • 이미지 컬러 시스템 변경
# BGR -> RGB
rgb = cv2.cvtColor(img, cv2.COLOR_BRG2RGB)
# BGR -> GRAY(흑백)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

2. 오버레이

  • 오버레이 이미지는 png파일, 배경은 투명한 이미지가 좋다.
import cv2

img = cv2.imread('img.jpg')
overlay_img = cv2.imread('overlay.png', cv2.IMREAD_UNCHANGED) # 투명도도 읽어오기

overlay_img = cv2.resize(overlay_img, dsize=(150, 150))

overlay_alpha = overlay_img[:, :, 3:] / 255.0 # 투명도 [높이, 너비, 채널] (0=B,1=G,2=R,3=A)
background_alpha = 1.0 - overlay_alpha

x1 = 100
y1 = 100
x2 = x1 + 150
y2 = y1 + 150

img[y1:y2, x1:x2] = overlay_alpha * overlay_img[:, :, :3] + background_alpha * img[y1:y2, x1:x2]

cv2.imshow('result', img)
cv2.waitKey(0)


profile
아닐지

0개의 댓글