기계는 거짓말하지 않는다

Python OpenCV (4) 이미지 편집 본문

Python

Python OpenCV (4) 이미지 편집

KillinTime 2021. 7. 14. 20:45

OpenCV를 이용한 이미지 편집(감마, 블러, 패딩)의 예

640 x 360 (16:9)로 resize한 이미지 이용

# 이미지 밝기, 감마
aurora = cv2.imread("aurora.jpg")
aurora = cv2.resize(aurora, (640, 360))
g = 2.2
table = np.array([((i / 255.0) ** (1/g)) * 255 for i in np.arange(0, 256)]).astype("uint8") # g를 변경하면 변화
gamma_img = cv2.LUT(aurora, table)
# 미리 가중치를 계산해 각 화소가 계산 후 어떤 결과가 되는지 참조만 하는 테이블을 만듦. 연산량 줄임

val = 50 # randint(10, 50)
array = np.full(aurora.shape, (val, val, val), dtype=np.uint8)
bright_img = cv2.add(aurora, array).astype("uint8")

cv2.imshow("origin", aurora)
cv2.imshow("bright", bright_img)
cv2.imshow("gamma", gamma_img)
cv2.waitKey()

왼쪽부터 origin, bright, gamma

# 이미지 블러링 (사람 얼굴 등 블러 처리)
blu_img = cv2.blur(img2, (15, 15)) # 가중치

roi = img2[100:300, 200:450] # y, x
roi = cv2.blur(roi, (15, 15))
img2[100:300, 200:450] = roi

cv2.imshow("blu", blu_img)
cv2.imshow("s_blu", img2)
cv2.waitKey()

전체 블러, 부분 블러

# 이미지 패딩
# 값 만큼 지정된 색상으로 왼쪽 오른쪽 위 아래 이미지를 더 채움
# 640, 360 -> 700, 700
img_pad = cv2.cv2.copyMakeBorder(img, 170, 170, 30, 30, cv2.BORDER_CONSTANT, value=[0, 0, 0]) # top, bottom, left, right
cv2.imshow("img_pad", img_pad)
cv2.waitKey()
# 정사각형으로 패딩 후 resize -> 비율이 깨지지 않음

640 x 360 -> 700 x 700

'Python' 카테고리의 다른 글

Python Selenium, BeautifulSoup  (0) 2021.07.19
Python Crawling  (0) 2021.07.19
Python OpenCV (3) 이미지 편집  (0) 2021.07.14
Python OpenCV (2) 도형 그리기  (0) 2021.07.13
Python OpenCV (1) 기본 이미지 다루기  (0) 2021.07.11
Comments