mcpField
M
modelslab-image-editing

modelslab-image-editing

github.com/modelslab创意与媒体1391 次安装36 周前更新
代码仓库

关于 modelslab-image-editing

modelslab-image-editing 是通过 API 请求调用 ModelsLab 图像编辑端点的技能,涵盖背景和物体移除、放大、扩图、创建蒙版及指令式编辑。

主要功能

  1. 01移除图像背景
  2. 02将图像放大 2 倍或 4 倍
  3. 03通过扩图延伸图像边缘
  4. 04移除指定物体
  5. 05创建物体蒙版
  6. 06使用 Qwen 指令编辑图像

适用场景

  1. 01移除背景并放大商品照片
  2. 02清理房地产照片中的多余物体
  3. 03扩展图形以适配不同宽高比
  4. 04提升头像分辨率

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/modelslab/skills --skill modelslab-image-editing

安装后在 Claude Code 中输入/modelslab-image-editing确认已加载。

详细介绍

ModelsLab 图像编辑

由 AI 驱动的专业图像编辑工具,包括背景移除、放大、扩图和对象处理。

何时使用此技能

  • 移除图像背景
  • 放大图像(2x、4x 超分辨率)
  • 将图像扩展到边界之外(扩图)
  • 移除图像中不需要的对象
  • 创建专业的产品照片
  • 提升图像质量
  • 使用 AI 辅助编辑图像

可用端点

背景移除

POST https://modelslab.com/api/v6/image_editing/removebg

超分辨率(放大)

POST https://modelslab.com/api/v6/image_editing/super_resolution

扩图

POST https://modelslab.com/api/v6/image_editing/outpainting

对象移除

POST https://modelslab.com/api/v6/image_editing/object_removal

蒙版创建器

POST https://modelslab.com/api/v6/image_editing/create_mask

Qwen 图像编辑(AI 编辑)

POST https://modelslab.com/api/v6/image_editing/qwen_edit

背景移除

import requests

def remove_background(image_url, api_key):
    """Remove background from an image.

    Args:
        image_url: URL of the image
        api_key: Your ModelsLab API key

    Returns:
        URL of image with transparent background
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/removebg",
        json={
            "key": api_key,
            "image": image_url
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    else:
        raise Exception(f"Error: {data.get('message', 'Unknown error')}")

# Usage
result = remove_background(
    "https://example.com/product-photo.jpg",
    "your_api_key"
)
print(f"Image without background: {result}")

超分辨率(放大)

def upscale_image(image_url, api_key, scale=4):
    """Upscale an image to higher resolution.

    Args:
        image_url: URL of the image to upscale
        scale: Upscale factor (2 or 4)

    Returns:
        URL of upscaled high-resolution image
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/super_resolution",
        json={
            "key": api_key,
            "image": image_url,
            "scale": scale  # 2x or 4x
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    else:
        raise Exception(data.get("message"))

# Upscale to 4x resolution
hd_image = upscale_image(
    "https://example.com/low-res.jpg",
    "your_api_key",
    scale=4
)
print(f"HD image: {hd_image}")

扩图(扩展图像)

def extend_image(image_url, prompt, api_key, width=1024, height=768):
    """Extend an image beyond its original boundaries.

    Args:
        image_url: Original image URL
        prompt: Description of how to extend the image
        width: New width (larger than original)
        height: New height (larger than original)
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/outpainting",
        json={
            "key": api_key,
            "image": image_url,
            "prompt": prompt,
            "width": width,
            "height": height,
            "num_inference_steps": 30,
            "guidance_scale": 7.5
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_result(data["id"], api_key)

# Extend a landscape image
extended = extend_image(
    "https://example.com/landscape.jpg",
    "Continue the mountain landscape with more peaks and valleys",
    "your_api_key",
    width=1024,
    height=768
)

对象移除

def remove_object(image_url, object_name, api_key):
    """Remove a specific object from an image.

    Args:
        image_url: URL of the image
        object_name: Name of object to remove (e.g., "person", "car", "sign")
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/object_removal",
        json={
            "key": api_key,
            "image": image_url,
            "object_name": object_name
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_result(data["id"], api_key)

# Remove person from photo
cleaned = remove_object(
    "https://example.com/photo.jpg",
    "person in background",
    "your_api_key"
)

AI 驱动的图像编辑(Qwen)

def edit_image_with_ai(image_url, edit_instruction, api_key):
    """Edit image using AI instructions.

    Args:
        image_url: URL of the image to edit
        edit_instruction: Natural language editing instruction
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/qwen_edit",
        json={
            "key": api_key,
            "image": image_url,
            "prompt": edit_instruction,
            "negative_prompt": "low quality, distorted",
            "num_inference_steps": 30,
            "guidance_scale": 7.5
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_result(data["id"], api_key)

# AI-powered editing
edited = edit_image_with_ai(
    "https://example.com/portrait.jpg",
    "Make the background more blurred and add warm sunset lighting",
    "your_api_key"
)

创建蒙版

def create_object_mask(image_url, object_description, api_key):
    """Create a mask for a specific object in an image.

    Args:
        image_url: URL of the image
        object_description: What to mask (e.g., "person", "car", "background")

    Returns:
        URL of mask image (white = selected, black = not selected)
    """
    response = requests.post(
        "https://modelslab.com/api/v6/image_editing/create_mask",
        json={
            "key": api_key,
            "image": image_url,
            "object": object_description
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]

# Create mask for person
mask_url = create_object_mask(
    "https://example.com/group-photo.jpg",
    "person in red shirt",
    "your_api_key"
)

轮询辅助工具

import time

def poll_result(request_id, api_key, timeout=300):
    """Poll for async editing results."""
    start_time = time.time()

    while time.time() - start_time < timeout:
        fetch = requests.post(
            f"https://modelslab.com/api/v6/image_editing/fetch/{request_id}",
            json={"key": api_key}
        )
        result = fetch.json()

        if result["status"] == "success":
            return result["output"][0]
        elif result["status"] == "failed":
            raise Exception(result.get("message", "Failed"))

        time.sleep(5)

    raise Exception("Timeout")

常见工作流

电商产品照片
def prepare_product_image(image_url, api_key):
    """Complete product photo workflow."""

    # Step 1: Remove background
    no_bg = remove_background(image_url, api_key)
    print(f"Background removed: {no_bg}")

    # Step 2: Upscale to high resolution
    hd_image = upscale_image(no_bg, api_key, scale=4)
    print(f"Upscaled: {hd_image}")

    return hd_image

product_image = prepare_product_image(
    "https://example.com/product.jpg",
    "your_api_key"
)
照片清理
def cleanup_photo(image_url, unwanted_objects, api_key):
    """Remove multiple unwanted objects from photo."""

    cleaned_image = image_url

    for obj in unwanted_objects:
        cleaned_image = remove_object(cleaned_image, obj, api_key)
        print(f"Removed: {obj}")

    # Upscale final result
    final = upscale_image(cleaned_image, api_key, scale=2)

    return final

result = cleanup_photo(
    "https://example.com/vacation.jpg",
    ["power lines", "trash can", "stranger in background"],
    "your_api_key"
)
扩展和增强
def extend_and_enhance(image_url, extension_prompt, api_key):
    """Extend image and upscale result."""

    # Extend the image
    extended = extend_image(
        image_url,
        extension_prompt,
        api_key,
        width=1920,
        height=1080
    )

    # Upscale for maximum quality
    final = upscale_image(extended, api_key, scale=2)

    return final

最佳实践

1. 背景移除
  • 主体与背景分离清晰时效果最佳
  • 原始图像光线充足会有所帮助
  • 输入质量越高,输出效果越好
2. 超分辨率
  • 适度放大时使用 2x
  • 需要最大程度提升质量时使用 4x
  • 不要放大分辨率已经很高的图像
  • 清晰、对焦准确的图像效果最佳
3. 扩图
  • 在扩展提示词中提供具体描述
  • 与原始图像风格保持一致
  • 扩展时考虑构图
  • 测试不同尺寸
4. 对象移除
  • 明确说明对象的位置
  • 简单背景下效果最佳
  • 复杂场景可能需要多次处理
5. 使用 Webhook 执行批量操作
# Process many images
for image in image_list:
    response = requests.post(
        endpoint,
        json={
            "key": api_key,
            "image": image,
            "webhook": "https://yourserver.com/callback",
            "track_id": f"img_{image_id}"
        }
    )

常见用例

专业头像照
# Remove background and upscale
headshot = remove_background(original, api_key)
hd_headshot = upscale_image(headshot, api_key, scale=4)
房地产照片
# Remove unwanted items
clean_room = remove_object(
    room_photo,
    "personal items and clutter",
    api_key
)

# Extend to show more space
wider_view = extend_image(
    clean_room,
    "Continue the modern living room with more furniture",
    api_key,
    width=1920,
    height=1080
)
社交媒体图形
# Upscale for quality
high_res = upscale_image(graphic, api_key, scale=2)

# Extend to different aspect ratios
instagram_square = extend_image(
    high_res,
    "Extend background",
    api_key,
    width=1080,
    height=1080
)

错误处理

try:
    result = remove_background(image_url, api_key)
    print(f"Success: {result}")
except Exception as e:
    print(f"Editing failed: {e}")
    # Log error, retry, or notify user

资源

相关技能

  • modelslab-image-generation - 生成要编辑的图像
  • modelslab-webhooks - 处理异步操作
  • modelslab-sdk-usage - 使用官方 SDK

评论

支持 Markdown