파이썬과 API로 디렉토리에서 최신 인물 이미지의 배경 제거를 자동화

하고 싶은 일


  • 인물 이미지 배경 제거
  • 배경 제거 할 이미지의 입력 대상과 배경 제거 된 이미지의 출력 대상을 자세히 지정합니다
  • 폴더의 최신 이미지 참조
  • 그 자동화

  • OpenCV와 facenet과 이미지를 사용하여 얼굴 인식을 수행하고 어떤 종류의 처리를하고 싶은 것이 가끔있을 것입니다. 물론 이러한 툴로 얼굴을 인식해 줍니다만, 이미지내의 배경 등의 불필요한 것에 의해 “얼굴 인식의 정밀도가 극적으로 떨어지는 경우가 있다”는 것을 알았습니다. 그럼, 미리 배경을 없애 두어, 얼굴 인식의 정밀도를 안정시키자! 라는 것으로 배경 제거를 실시합니다. 뭐 동기는 뭐든지 좋다.

    레도 베. bg



    배경 제거 자체는 레도 베. bg이라는 웹 응용 프로그램을 사용합니다. 어떤 걸까 보는 것이 빠릅니다.
    before

    after

    레도 베. bg 는 이런 정밀도의 배경 제거가 웹상에서 간단하게 실시할 수 있습니다.

    배경 제거 자동화



    자신이 구현중인 시스템의 일부로서 이미지가 저장된 디렉토리 내의 “최신” 이미지를 참조하여 배경 제거를 수행하고 다른 디렉토리에 결과를 반환하는 구조를 자동화해 나갑니다. .

    레도 베. bg 은 API를 게시하고 있으므로 이를 사용하여 배경 제거를 자동화할 수 있습니다. 회원 가입하여 일반 계정으로 1개월 50회까지 무료로 API를 호출할 수 있습니다.
    # Requires "requests" to be installed (see python-requests.org)
    import requests
    
    response = requests.post(
        'https://api.remove.bg/v1.0/removebg',
        files={'image_file': open('/path/to/file.jpg', 'rb')},
        data={'size': 'auto'},
        headers={'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'},
    )
    if response.status_code == requests.codes.ok:
        with open('no-bg.png', 'wb') as out:
            out.write(response.content)
    else:
        print("Error:", response.status_code, response.text)
    

    'INSERT_YOUR_API_KEY_HERE' 부분에 레도 베. bg 에서 얻은 API Key를 삽입합니다.
    이미지의 입력과 출력의 자동화는 패스 스펙으로 간단하게 할 수 있습니다.
    '/path/to/file.jpg' 부분에 배경을 제거할 이미지의 경로를 지정합니다.
    'no-bg.png' 부분에서 출력하고자 하는 이미지의 파일명을 결정하여 디렉토리 경로를 지정할 수 있습니다.

    최신 이미지 참조



    이번에는 mac 표준의 Photo Booth라고 하는 카메라 어플리로 촬영한 “최신의” 화상을 인풋 하고 싶기 때문에, 패스 지정은 조금만 궁리합니다.
    i_path = '/Users/username/Pictures/Photo Boothライブラリ/Pictures/*'
    list_of_files = glob.glob(i_path) 
    latest_file = max(list_of_files, key=os.path.getctime)
    

    i_path로 검색할 이미지가 저장되는 디렉토리를 지정합니다.
    glob 함수로 디렉토리의 이미지 목록을 가져옵니다.
    max 함수와 옵션으로 파일의 날짜와 시간의 최대값, 즉 최신 이미지를 얻을 수 있습니다.

    전체 코드


    import glob
    import os
    import requests
    
    i_path = '/Users/username/Pictures/Photo Boothライブラリ/Pictures/*'
    list_of_files = glob.glob(i_path) 
    latest_file = max(list_of_files, key=os.path.getctime)
    
    # RemoveBgAPI
    response = requests.post(
        'https://api.remove.bg/v1.0/removebg',
        files={'image_file': open(latest_file, 'rb')},
        data={'size': 'auto'},
        headers={'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'},
    )
    if response.status_code == requests.codes.ok:
        with open('/Users/username/output/no-bg.png', 'wb') as out:
            out.write(response.content)
        print('Success!')
    else:
        print("Error:", response.status_code, response.text)
    

    요약



    remove.bg API 덕분에 배경 제거 자동화가 매우 쉽게 구현되었습니다.
    또한 최신 이미지 파일 지정이라는 소기도 바로 구현할 수 있어 목적을 달성했습니다.
    수동으로 번거로운 작업은 프로그램에 던지면 편하고 좋네요.

    좋은 웹페이지 즐겨찾기