NAV
shell python php javascript

API видалення фону дозволяє інтегрувати видалення фону на основі штучного інтелекту у ваші програми. Видаляйте фони із зображень і відео програмно за допомогою простих викликів REST API.

Щоб розпочати, зареєструйте ключ API на Портал розробника

Authorization: <api_key>

Довідник параметрів API

Наступні параметри можна включити до ваших запитів API. Усі завантаження файлів підтримують великі файли без практичного обмеження розміру.

Параметри обробки зображень

ПараметрТипЗа замовчуваннямОпис
convert_tostringобов'язковийВстановлено на видалення фону зображення
modelstringu2netМодель ШІ: u2net (загальні об'єкти/люди/речі), u2net_human_seg (оптимізована для людей), u2netp (швидка/легка)
alpha_mattingbooleanfalseУвімкніть альфа-матування для чіткіших країв волосся та дрібних деталей
alpha_fgint240Поріг переднього плану (0-255). Вищий = суворіше виявлення переднього плану
alpha_bgint10Поріг фону (0-255). Нижчий = суворіше виявлення фону
alpha_erodeint10Розмір ерозії країв (1-25). Керує різкістю країв
alpha_base_sizeint1000Базовий розмір для обробки альфа-матування. Вищий = краща якість, але повільніше
only_maskbooleanfalseПовернути чорно-білу маску замість прозорого зображення
bg_typestringtransparentТип фону: прозорий, кольоровий або зображення
bg_color_valuestring#ffffffКолір фону в шістнадцятковому форматі (коли bg_type=колір)

Параметри обробки відео

ПараметрТипЗа замовчуваннямОпис
convert_tostringобов'язковийВстановлено на видалення фону відео
modelstringu2netМодель ШІ: u2net (загальна), u2net_human_seg (люди), u2netp (швидка)
video_formatstringmovВихідний формат: mov (прозорий), mattekey (matte mp4), gif (анімований), video_over_image, video_over_video, gif_with_bg, mp4_with_color
alpha_mattingbooleanfalseУвімкнути альфа-матування для чіткіших країв
alpha_fgint240Поріг переднього плану (0-255)
alpha_bgint10Поріг фону (0-255)
alpha_erodeint10Розмір ерозії краю (1-25)
alpha_base_sizeint1000Базовий розмір для обробки альфа-матування
video_bg_color_enabledbooleanfalseУвімкнути суцільний колір фону (для формату mp4_with_color)
video_bg_colorstring#00ff00Колір фону в шістнадцятковому форматі
framerateintautoКористувацька частота кадрів на виході (1-60 кадрів/с). Залиште порожнім, щоб відповідати вхідному відео.
frame_limitintnoneОбмежте обробку першими N кадрами. Корисно для тестування або створення кліпів.

Видалити фон зображення

Видалити фон зображення

import requests
import time
import shutil
import json

headers = {'Authorization': 'YOUR_API_KEY'}
file_list = ['testfiles/image.jpeg']
params = {
    'lang': 'en',
    'convert_to': 'image-backgroundremover',
    'model': 'u2net',
    'alpha_matting': 'true',
    'alpha_fg': '240',
    'alpha_bg': '10',
    'alpha_erode': '10',
}
api_domain = "api.backgroundremoverai.com"
port = "https"
api_url = f"{port}://{api_domain}/v1/convert/"
results_url = f"{port}://{api_domain}/v1/results/"


def download_file(url, local_filename):
    with requests.get(f"{port}://{api_domain}{url}", stream=True) as r:
        with open(local_filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
    return local_filename


def convert_files(api_url, params, headers):
    files = [eval(f'("files", open("{file}", "rb"))') for file in file_list]
    r = requests.post(
        url=api_url,
        files=files,
        data=params,
        headers=headers
    )
    if r.status_code != 200:
        print(r.status_code)
        print(r.content)
        return

    return r.json()


def get_results(params):
    if params.get('error'):
        return params.get('error')

    r = requests.post(
        url=results_url,
        data=params
    )
    data = r.json()
    finished = data.get('finished')

    while not finished:
        if int(data.get('queue_count')) > 0:
            print('queue: %s' % data.get('queue_count'))

        time.sleep(5)
        results = get_results(params)
        results = json.dumps(results)

        if results:
            break
    if finished:
        for f in data.get('files'):
            download_file("%s" % f.get('url'), "%s" % f.get('filename'))
        return {"finished": "files downloaded"}

    return r.json()


resp = convert_files(api_url, params, headers)
get_results(resp)
curl -F "lang=en" -F "convert_to=image-backgroundremover" -F "files=@image.jpeg" -H "Authorization: YOUR_API_KEY" https://api.backgroundremoverai.com/v1/convert/

{"uuid": "conversion_uuid"}

curl -F "uuid=conversion_uuid" https://api.backgroundremoverai.com/v1/results/

{"files": [{"url": "/path/to/file.png", "filename": "file.png"}], "failed": [], "finished": true, "queue_count": 0, "errors": []}





<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR | E_PARSE);

$headers = array("Authorization: YOUR_API_KEY");
$file_list = ['/path/to/files/image.jpeg'];
$api_url = "https://api.backgroundremoverai.com/v1/convert/";
$results_url = "https://api.backgroundremoverai.com/v1/results/";

function download_file($url, $filename){
    $curl = curl_init();
    $url = "https://api.backgroundremoverai.com" . $url;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    $data = curl_exec($curl);
    $error = curl_error($curl);
    curl_close ($curl);
    $destination_path = "/path/to/result/files/";
    $destination_file = fopen($destination_path . $filename, "w+");
    fwrite($destination_file, $data);
    fclose($destination_file);
}

function convert_files($file_list, $headers, $api_url) {
    $post_data['lang'] = 'en';
    $post_data['convert_to'] = 'image-backgroundremover';
    $post_data['model'] = 'u2net';
    $post_data['alpha_matting'] = 'true';

    foreach ($file_list as $index => $file) {
        $post_data['file[' . $index . ']'] = curl_file_create(
            realpath($file),
            mime_content_type($file),
            basename($file)
        );
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($curl);
    curl_close($curl);

    return json_decode($content);
}

function get_results($params, $results_url, $headers) {
    if ($params->error) {
        print_r($params->error);
        return;
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $results_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_decode(json_encode($params), true));
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = json_decode(curl_exec($curl));
    curl_close($curl);

    if ($content->finished == false) {
        if (intval($content->queue_count) > 0) {
            print_r("queue: $content->queue_count");
        }

        sleep(5);
        $results = get_results($params, $results_url, $headers);
        return;
    }

    foreach ($content->files as $f) {
        download_file($f->url, $f->filename);
    }
}

$resp = convert_files($file_list, $headers, $api_url);
get_results($resp, $results_url, $headers);
?>
const request = require('request');
const fs = require('fs');

let file_list = ['/testfiles/blah.jpeg']
const api_url = 'https://api.backgroundremoverai.com/v1/convert/'
const results_url = 'https://api.backgroundremoverai.com/v1/results/'

function convertFiles(file_list) {
    let formData = {
        'lang': 'en',
        'convert_to': 'image-backgroundremover',
        'model': 'u2net',
        'alpha_matting': 'true'
    };

    for (var i = 0; i < file_list.length; i ++) {
        formData['files'] = fs.createReadStream(file_list[i]);
    }

    request({
        url: api_url,
        method: 'post',
        formData: formData,
        headers: {
            "Authorization": "YOUR_API_KEY",
            "Content-Type": "multipart/form-data",
        }
    }, function(err, res, body) {
        if (err) {
            console.error(err);
            return err;
        }
        getResults(JSON.parse(body));
    });
}

function getResults(data) {
    if (data.error) {
        console.error(data);
        return data.error;
    }
    request({
        url: results_url,
        method: 'post',
        formData: data
    }, function(e, r, body) {
        response = JSON.parse(body);
        console.log(response);
        if (!response.finished) {
            setTimeout(
                function() {
                    getResults(data);
                }, 1000
            );
        }

        console.log(response);
    })
}

convertFiles(file_list);

API поверне шлях до обробленого файлу.

/path/to/local/file_processed.png

Щоб обробити кілька файлів, додайте їх до одного запиту. Кожен файл буде оброблено та повернуто окремо.

Видалити фон відео

Видалити фон відео

import requests
import time
import shutil
import json

headers = {'Authorization': 'YOUR_API_KEY'}
file_list = ['testfiles/video.mp4']
params = {
    'lang': 'en',
    'convert_to': 'video-backgroundremover',
    'model': 'u2net',
    'video_format': 'mov',
    'alpha_matting': 'true',
}
api_domain = "api.backgroundremoverai.com"
port = "https"
api_url = f"{port}://{api_domain}/v1/convert/"
results_url = f"{port}://{api_domain}/v1/results/"


def download_file(url, local_filename):
    with requests.get(f"{port}://{api_domain}{url}", stream=True) as r:
        with open(local_filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
    return local_filename


def convert_files(api_url, params, headers):
    files = [eval(f'("files", open("{file}", "rb"))') for file in file_list]
    r = requests.post(
        url=api_url,
        files=files,
        data=params,
        headers=headers
    )
    if r.status_code != 200:
        print(r.status_code)
        print(r.content)
        return

    return r.json()


def get_results(params):
    if params.get('error'):
        return params.get('error')

    r = requests.post(
        url=results_url,
        data=params
    )
    data = r.json()
    finished = data.get('finished')

    while not finished:
        if int(data.get('queue_count')) > 0:
            print('queue: %s' % data.get('queue_count'))

        time.sleep(5)
        results = get_results(params)
        results = json.dumps(results)

        if results:
            break
    if finished:
        for f in data.get('files'):
            download_file("%s" % f.get('url'), "%s" % f.get('filename'))
        return {"finished": "files downloaded"}

    return r.json()


resp = convert_files(api_url, params, headers)
get_results(resp)
curl -F "lang=en" -F "convert_to=video-backgroundremover" \
     -F "files=@video.mp4" \
     -H "Authorization: YOUR_API_KEY" https://api.backgroundremoverai.com/v1/convert/

{"uuid": "conversion_uuid"}

curl -F "uuid=conversion_uuid" https://api.backgroundremoverai.com/v1/results/

{"files": [{"url": "/path/to/file.mov", "filename": "file.mov"}], "failed": [], "finished": true, "queue_count": 0, "errors": []}





<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR | E_PARSE);

$headers = array("Authorization: api_key");
$file_list = ['/path/to/files/blah.mp4'];
$api_url = "https://api.backgroundremoverai.com/v1/convert/";
$results_url = "https://api.backgroundremoverai.com/v1/results/";

function download_file($url, $filename){
    $curl = curl_init();
    $url = "https://api.backgroundremoverai.com" . $url;
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    $data = curl_exec($curl);
    $error = curl_error($curl);
    curl_close ($curl);
    $destination_path = "/path/to/result/files/";
    $destination_file = fopen($destination_path . $filename, "w+");
    fwrite($destination_file, $data);
    fclose($destination_file);
}

function convert_files($file_list, $headers, $api_url) {
    $post_data['lang'] = 'en';
    $post_data['convert_to'] = 'video-backgroundremover';

    foreach ($file_list as $index => $file) {
        $post_data['file[' . $index . ']'] = curl_file_create(
            realpath($file),
            mime_content_type($file),
            basename($file)
        );
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($curl);
    curl_close($curl);

    return json_decode($content);
}

function get_results($params, $results_url, $headers) {
    if ($params->error) {
        print_r($params->error);
        return;
    }

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $results_url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_decode(json_encode($params), true));
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $content = json_decode(curl_exec($curl));
    curl_close($curl);

    if ($content->finished == false) {
        if (intval($content->queue_count) > 0) {
            print_r("queue: $content->queue_count");
        }

        sleep(5);
        $results = get_results($params, $results_url, $headers);
        return;
    }

    foreach ($content->files as $f) {
        download_file($f->url, $f->filename);
    }
}

$resp = convert_files($file_list, $headers, $api_url);
get_results($resp, $results_url, $headers);
?>
const request = require('request');
const fs = require('fs');

let file_list = ['/testfiles/blah.mp4']
const api_url = 'https://api.backgroundremoverai.com/v1/convert/'
const results_url = 'https://api.backgroundremoverai.com/v1/results/'

function convertFiles(file_list) {
    let formData = {
        'lang': 'en',
        'convert_to': 'video-backgroundremover'
    };

    for (var i = 0; i < file_list.length; i ++) {
        formData['files'] = fs.createReadStream(file_list[i]);
    }

    request({
        url: api_url,
        method: 'post',
        formData: formData,
        headers: {
            "Authorization": "YOUR_API_KEY",
            "Content-Type": "multipart/form-data",
        }
    }, function(err, res, body) {
        if (err) {
            console.error(err);
            return err;
        }
        getResults(JSON.parse(body));
    });
}

function getResults(data) {
    if (data.error) {
        console.error(data);
        return data.error;
    }
    request({
        url: results_url,
        method: 'post',
        formData: data
    }, function(e, r, body) {
        response = JSON.parse(body);
        console.log(response);
        if (!response.finished) {
            setTimeout(
                function() {
                    getResults(data);
                }, 1000
            );
        }

        console.log(response);
    })
}

convertFiles(file_list);

API поверне шлях до обробленого файлу.

/path/to/local/file_processed.mov
/path/to/local/file_processed.gif

Щоб обробити кілька файлів, додайте їх до одного запиту. Кожен файл буде оброблено та повернуто окремо.