첫번째는 용량을 줄이기 위해 이미지 크기를 축소합니다. 갤럭시 S23울트라의 경우 3000 X 4000 픽셀인데 사이즈를 40% 축소(1200 X 1600)하면 용량이 확연히 줍니다. 이는 용량부담(=돈) 감소와 로딩속도 향상으로 이어져 검색사이트에 좋은 점수를 받는 요인이 됩니다.
두번째는 사진 속 사람 얼굴에 스티커를 붙여 가려줍니다. 내 얼굴도 공개하기 싫고 또한 다른 사람 얼굴도 불필요하게 담는것도 좋지 않은것 같아서입니다.
이 2가지 작업은 간단하지만 수작업으로 해야하고 꽤 귀찮은 일입니다. 그런데 이러한 작업을 클릭한번으로 자동으로 처리할 수 있는 코드를 소개하고자 합니다.
고화질 이미지는 보기에는 좋지만, 웹사이트나 블로그에 업로드할 때 로딩 속도를 느리게 만들고 서버 공간을 많이 차지하는 원인이 됩니다.
이 파이썬 코드는 `cv2.resize` 함수를 사용하여 이미지의 가로, 세로 크기를 사용자가 지정한 비율로 줄여줍니다. 예를 들어, `scale_percent=40`으로 설정하면 이미지의 크기가 원래의 40%로 축소되어 파일 용량이 크게 줄어듭니다. 이를 통해 블로그나 웹사이트에 이미지를 더욱 빠르고 효율적으로 게시할 수 있습니다.
특히, 정면 얼굴뿐만 아니라 측면 얼굴까지 인식할 수 있도록 두 개의 캐스케이드 분류기(`haarcascade_frontalface_default.xml`, `haarcascade_profileface.xml`)를 사용한 것이 특징입니다. 얼굴이 감지되면 해당 영역에 `PIL (Python Imaging Library)`을 이용하여 사용자가 지정한 스티커 이미지를 자동으로 합성해줍니다. 여러 장의 사진에 동일한 스티커를 일괄적으로 적용해야 할 때 매우 유용하며, 재미있는 사진 편집을 손쉽게 만들 수 있도록 도와줍니다.
import cv2
import os
from PIL import Image
# 하르 캐스케이드 파일 경로
face_cascade_front = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade_side = cv2.CascadeClassifier('haarcascade_profileface.xml')
def process_images(folder_path, output_folder, sticker_path, scale_percent=40):
"""
폴더 내 이미지 파일의 크기를 축소하고 얼굴(정면, 측면)에 스티커를 추가합니다.
Args:
folder_path (str): 이미지 파일이 있는 폴더 경로
output_folder (str): 처리된 이미지를 저장할 폴더 경로
sticker_path (str): 스마일 스티커 이미지 파일 경로
scale_percent (int, optional): 이미지 축소 비율 (기본값: 40)
"""
# 스티커 이미지 로드
sticker = Image.open(sticker_path)
# 출력 폴더 생성 (없을 경우)
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 폴더 내 모든 이미지 파일 처리
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
image_path = os.path.join(folder_path, filename)
image = cv2.imread(image_path)
if image is None:
print(f"이미지 로드 실패: {image_path}")
continue
# 이미지 크기 축소
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
dim = (width, height)
resized_image = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
# 얼굴 인식 (정면 및 측면)
gray = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY)
faces_front = face_cascade_front.detectMultiScale(gray, 1.3, 5)
faces_side = face_cascade_side.detectMultiScale(gray, 1.3, 5) # 측면 얼굴 인식
# 얼굴에 스티커 추가
pil_image = Image.fromarray(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB))
for (x, y, w, h) in faces_front:
resized_sticker = sticker.resize((w, h))
pil_image.paste(resized_sticker, (x, y), resized_sticker)
for (x, y, w, h) in faces_side: # 측면 얼굴 스티커 추가
resized_sticker = sticker.resize((w, h))
pil_image.paste(resized_sticker, (x, y), resized_sticker)
# 처리된 이미지 저장
output_path = os.path.join(output_folder, filename)
pil_image.save(output_path)
print(f"처리 완료: {output_path}")
# 사용 예시
folder_path = "raw_img"
output_folder = "pre_img"
sticker_path = "smile.png"
process_images(folder_path, output_folder, sticker_path)순위회사명인당급여직원수(명)1SK스퀘어2.79억원882LG1.87억원1823SK텔레콤1.62억원5,4934삼성증권1.57억원2,5655삼성카드1.50억원2,0216삼성화재해상보험1.49억원5,5497삼성생명1.48억원5,1638기아1.36억원35,7479현대모비스1.35억원12,31010삼성에스디에스1.34억원11,38711삼성물산1.34억원9,38012삼성전자1.30억원129,48013삼성E&A1.29억원5,85414SKC1.28억원17815SK아이이테크놀로지1.28억원38916제일기획1.28억원1,47417현대위아1.26억원2,93718현대자동차1.24억원75,13719현대로템1.20억원4,18220SK이노베이션1.19억원2,14821SK가스1.19억원66122LG에너지솔루션1.18억원12,63523SK하이닉스1.18억원32,39024현대차증권1.17억원89825LG전자1.17억원35,72726SK1.17억원4,40427LG씨엔에스1.16억원6,89128SK증권1.14억원84229SK디앤디1.12억원18030LG유플러스1.10억원10,57131현대건설1.09억원7,14732SK디스커버리1.09억원7233삼성바이오로직스1.07억원5,01134현대오토에버1.04억원5,42135삼성전기1.03억원12,16136LG화학1.03억원13,85737현대글로비스1.00억원2,44138삼성SDI0.97억원13,34139삼성중공업0.94억원10,11240현대제철0.93억원11,80341HS애드0.86억원79642SK케미칼0.85억원2,93243LG디스플레이0.83억원25,14444LG헬로비전0.82억원1,07545에스원0.81억원6,95846LG생활건강0.81억원4,38147SK바이오사이언스0.80억원1,02148LG이노텍0.80억원12,65849현대비앤지스틸0.76억원48650SK시그넷0.68억원35351SK오션플랜트0.62억원66452SK네트웍스0.60억원1,55453SK이터닉스0.39억원3084대그룹 평균1.19억원556,559 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…
순위회사명인당급여직원수(명)1기아1.36억원35,7472현대모비스1.35억원12,3103현대위아1.26억원2,9374현대자동차1.24억원75,1375현대로템1.20억원4,1826현대차증권1.17억원8987현대건설1.09억원7,1478현대오토에버1.04억원5,4219현대글로비스1.00억원2,44110이노션1.00억원94611현대제철0.93억원11,80312현대비앤지스틸0.76억원486현대차그룹 평균1.23억원159,455 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…
순위회사명인당급여직원수(명)1SK스퀘어2.79억원882SK텔레콤1.62억원5,4933SKC1.28억원1784SK아이이테크놀로지1.28억원3895SK이노베이션1.19억원2,1486SK가스1.19억원6617SK하이닉스1.18억원32,3908SK1.17억원4,4049SK증권1.14억원84210SK디앤디1.12억원18011SK디스커버리1.09억원7212SK케미칼0.85억원2,93213SK바이오사이언스0.80억원1,02114SK시그넷0.68억원35315SK오션플랜트0.62억원66416SK네트웍스0.60억원1,55417SK이터닉스0.39억원308SK그룹 평균1.17억원53,677 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…
순위회사명인당급여직원수(명)1LG1.87억원1822LG에너지솔루션1.18억원12,6353LG전자1.17억원35,7274LG씨엔에스1.16억원6,8915LG유플러스1.10억원10,5716LG화학1.03억원13,8577HS애드0.86억원7968LG디스플레이0.83억원25,1449LG헬로비전0.82억원1,07510LG생활건강0.81억원4,38111LG이노텍0.80억원12,658LG그룹 평균1.02억원123,917 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…
순위회사명인당급여직원수(명)1삼성증권1.57억원2,5652삼성카드1.50억원2,0213삼성화재해상보험1.49억원5,5494삼성생명1.48억원5,1635삼성에스디에스1.34억원11,3876삼성물산1.34억원9,3807삼성전자1.30억원129,4808삼성E&A1.29억원5,8549삼성바이오로직스1.07억원5,01110삼성전기1.03억원12,16111삼성SDI0.97억원13,34112삼성중공업0.94억원10,11213호텔신라0.56억원1,97214레인보우로보틱스0.48억원98삼성그룹 평균1.25억원214,094 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…