각 사진에 한 사람 만있는 이벤트에서 12,000 장의 사진이 있습니다. 3 분의 1을 적용하려면이 사진들을 잘라 내야합니다. 이 모든 것을 개별적으로 수행한다는 아이디어는 어려우며 모든 사진이 약간 다르기 때문에 모든 사진을 10 % 할인 할 수는 없습니다.
사람의 위치에 따라 이러한 사진을 모두 자동으로 자르는 방법이 있습니까?
각 사진에 한 사람 만있는 이벤트에서 12,000 장의 사진이 있습니다. 3 분의 1을 적용하려면이 사진들을 잘라 내야합니다. 이 모든 것을 개별적으로 수행한다는 아이디어는 어려우며 모든 사진이 약간 다르기 때문에 모든 사진을 10 % 할인 할 수는 없습니다.
사람의 위치에 따라 이러한 사진을 모두 자동으로 자르는 방법이 있습니까?
답변:
python
과 opencv
:left, right, top, bottom
변수로 지정된 패딩으로 jpeg 사진에서 찾은 모든 얼굴을 jpeg 사진에서 찾은 모든 폴더에서 자릅니다 .
import cv2
import sys
import glob
cascPath = "haarcascade_frontalface_default.xml"
# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)
files=glob.glob("*.jpg")
for file in files:
# Read the image
image = cv2.imread(file)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
print "Found {0} faces!".format(len(faces))
# Crop Padding
left = 10
right = 10
top = 10
bottom = 10
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
print x, y, w, h
# Dubugging boxes
# cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
image = image[y-top:y+h+bottom, x-left:x+w+right]
print "cropped_{1}{0}".format(str(file),str(x))
cv2.imwrite("cropped_{1}_{0}".format(str(file),str(x)), image)
쓰다
위의 스크립트를 사용하려면 필요 python
하고 opencv
설치 해야합니다 (Google에 opencv
플랫폼 설치 방법 ).
그런 다음 위의 코드를 .py
파일 "autocrop.py"
또는 다른 이름으로 저장 한 다음이 파일을 다운로드하여 저장 하고 이미지와 동일한 디렉토리에 저장하십시오.
스크립트는 .jpg
폴더에서 모든 파일을 찾아 파이썬 코드에 설정된 패딩 설정에 따라 자릅니다.
예:
위의 코드를 10px 패딩으로 설정하면 소스와 결과는 다음과 같습니다.
결과:
내가 뻔뻔스럽게 적응 한 튜토리얼은 다음과 같습니다.
https://realpython.com/blog/python/face-recognition-with-python/
이 튜토리얼은 나보다 모든 것을 설명하는 데 훨씬 좋습니다. 기본적으로 방금 코드를 가져 와서 파일 이름을 입력하는 대신 일괄 처리 작업에 조금 추가 한 다음 사각형을 그리는 대신 그림을 자르고 저장하도록 지시했습니다.
pip install opencv-python
, 2. 업데이트 모든 print
문은 3. 변경 괄호, 사용하기 cv2.cv.CV_HAAR_SCALE_IMAGE
에 cv2.CASCADE_SCALE_IMAGE
(소스 stackoverflow.com/a/36243142/2125392 )
면책 조항 : 저는이 도구의 개발자입니다.
Face Crop Jet 를 사용 하여 대량의 사진에서 얼굴을 감지하고자를 수 있습니다. 모든 형식 또는 크기의 이미지가 지원됩니다. 얼굴뿐만 아니라 ID 카드의 프로필 사진이 아니라 얼굴이 자동으로 감지되고 잘립니다.
소프트웨어는 http://www.facecropjet.com 에서 다운로드 할 수 있습니다