leblancfg/autocrop
📸 Automatically detects and crops faces from batches of pictures.
autocrop – 빠른 개요
기능
- 이미지에서 가장 큰 얼굴을 찾아 그 주변으로 이미지를 자르는 작은 Python 도구.
- 명령줄 또는 소규모 Python API를 통해 작동.
- OpenCV의 YuNet 신경망 얼굴 감지기를 사용하므로 감지가 로컬에서 실행되며 클라우드 서비스가 필요 없음.
중요성
- 프로필 사진, ID 카드 사진 또는 중앙에 얼굴이 있는 썸네일이 필요한 모든 워크플로에서 흔하고 지루한 단계를 자동화.
- 다양한 이미지 형식(PNG, JPEG, WebP, GIF, TIFF 등)을 처리하고 다양한 일반 형식으로 출력 가능.
설치 방법
pip install autocrop # 최신 2.x 릴리스 가져오기
Python 3.10 이상, OpenCV 4.8 이상, Pillow 12.3 이상이 필요합니다.
기본 사용법
- CLI – 원라이너 자르기:
autocrop portrait.jpg -o cropped.jpg # 500×500px로 자르고 크기 조정 autocrop portrait.jpg --no-resize > out.png # 원본 픽셀 크기 유지 autocrop - > out.jpg < portrait.jpg # 표준 입력에서 읽고 표준 출력에 쓰기 - Python – 소규모 API:
API는 잘린 이미지(RGB/RGBA NumPy 배열)를 포함하는from autocrop import Cropper from PIL import Image cropper = Cropper() # 기본적으로 align=False result = cropper.crop('portrait.png') # 파일 경로 또는 OpenCV BGR 배열 허용 if result.image is not None: Image.fromarray(result.image).save('cropped.png') print(result.diagnostics) # 선택된 얼굴, 자르기 사각형 등을 표시CropResult와 세부 정보가 포함된CropDiagnostics데이터클래스를 반환합니다.
주요 옵션
| 옵션 | 변경 내용 |
|---|---|
-w/--width -H/--height |
출력 크기(기본 500×500px). |
--no-resize |
마지막 크기 조정 생략, 원본 자르기 크기 유지. |
--align |
눈 랜드마크를 사용하여 얼굴을 수평으로 회전(기본 꺼짐). |
--json PATH |
자르기 진단 정보를 JSON 파일에 기록. |
-v/--verbose |
처리 시간 및 정보를 stderr에 출력. |
일괄 처리
이 도구는 호출당 단일 이미지를 처리하므로 대규모 컬렉션이나 비디오 프레임 워크플로에서 표준 셸 유틸리티(find, xargs, parallel, fd 등)와 쉽게 결합할 수 있습니다.
내부 동작
- autocrop은 OpenCV Zoo의
face_detection_yunet_2023mar.onnx모델을 포함하므로 오프라인으로 감지가 가능. - 감지기는 CPU에서 빠르게 실행되는 경량 신경망이며 GPU가 필요하지 않습니다.
프로젝트 상태
- CI는 Linux, macOS, Windows에서 Python 3.10–3.15로 실행.
- 최근 메이저 버전 2.0(2026년 10월)에서 중대한 API 변경이 도입되었으며 마이그레이션 노트가 제공됩니다.
- 기여 가이드라인과 공개 이슈 트래커로 활발히 유지 관리됩니다.
대표적인 사용 사례
- 웹 앱용 균일한 프로필 사진 썸네일 생성.
- ID 카드 사진 대량 준비.
- 다운스트림 ML 파이프라인을 위해 비디오 프레임에서 얼굴 자르기 추출.
autocrop은 AI 기반 이미지 처리 공간의 중심에 있는 얼굴 중심 이미지 자르기를 위한 집중적이고 프로덕션 준비가 된 유틸리티입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트