You need to enable JavaScript to run this app.
AI 数据湖服务

AI 数据湖服务

复制全文
图片处理
图像黑边裁剪
复制全文
图像黑边裁剪

算子ID:daft.las.functions.image.image_blackborder_crop.ImageBlackBorderCrop

算子介绍

描述

图像黑边检测裁剪处理器,支持多种检测算法和输出格式。

核心功能

  • 4种专业级黑边检测算法:
    • 阈值检测(threshold) - 速度最快,适合纯黑边/纯色边
    • 边缘检测(edge) - 基于Canny边缘,适合模糊/渐变黑边
    • 直方图检测(histogram) - 基于像素分布,适合低对比度黑边
    • 自动检测(auto) - 智能选择最优算法(推荐)
  • 多格式输入支持:
    • URL地址(image_url)
    • Base64编码(image_base64)
    • 二进制流(image_binary)
  • 多格式输出支持:
    • JPEG/JPG:自动转换RGBA→RGB,保留DPI
    • PNG:保留透明通道,无损保存
    • WebP:支持透明通道,灵活保存
  • 双输出模式:
    • Base64编码直出
    • TOS/本地持久化存储
  • 鲁棒性保障:
    • 最小黑边尺寸过滤(避免过度裁剪)
    • 边界校验(防止裁剪超出图像范围)
    • 检测失败自动降级为原图返回

注意与前提

细分项

注意与前提

费用

调用算子前,您需先了解使用算子时的模型调用费用,详情请参见大模型调用计费

鉴权(API Key)

调用算子前,您需要先生成算子调用的API Key,并建议将API Key配置为环境变量,便于更安全地调用算子,详情请参见获取 API Key 并配置

BaseURL

调用算子前,您需要先根据您当前使用的LAS服务所在地域,了解算子调用的BaseURL,用于配置算子调用路径参数取值。
详情请参见获取 Base URL,下文中的调用示例仅作为参考,实际调用时需替换为您对应地域的路径取值。

Daft 调用

算子参数

输入

输入列名

说明

image

包含输入图像的数组,支持URL/base64/二进制格式

image_name

可选参数,包含图像标识名的数组,用于生成输出文件名。

输出

包含处理结果的字典数组,每个元素包含:

  • base64: 裁剪后图像的base64编码;
  • image_path: 本地/TOS存储路径(当配置输出目录时有效)

参数

如参数没有默认值,则为必填参数

参数名称

类型

默认值

描述

image_suffix

str

.jpg

保存到 TOS/本地 的图像格式。
描述: 裁剪后图像的保存格式,支持多格式适配。
可选值: [".jpg", ".jpeg", ".png", ".webp"]
默认值: ".jpg"

output_dir

str

""

保存图像的输出文件夹路径。
描述: 将裁剪后的图像保存到的输出路径,为空则不保存到输出,支持 TOS 和本地路径。
默认值: ""

image_src_type

str

image_url

输入图像的格式类型。
描述: 输入图像的格式类型,支持URL/base64/二进制。
可选值: ["image_url", "image_base64", "image_binary"]
默认值: "image_url"

detect_algorithm

str

auto

黑边检测算法。
描述: 支持4种检测算法,auto模式自动选择最优方案。
可选值: ["threshold", "edge", "histogram", "auto"]
默认值: "auto"

black_threshold

int

10

灰度阈值(仅threshold/auto算法生效)。
描述: 像素灰度值低于该值视为黑边(0-255),值越小检测越严格。
默认值: 10

edge_sensitivity

float

1.0

边缘检测灵敏度(仅edge/auto算法生效)。
描述: 灵敏度越高,越容易检测到弱边缘(0.1-2.0)。
默认值: 1.0

min_border_size

int

1

最小黑边尺寸(像素)。
描述: 小于该尺寸的黑边不裁剪,避免过度裁剪。
默认值: 1

target_dpi

list

[72, 72]

图像 DPI。
描述: 保存图像时的DPI参数,格式为 [width, height]。
默认值: [72, 72]

quality

int

85

保存质量参数(适配不同格式):

  • JPEG/WebP:1-100(数值越高质量越好)
  • PNG:映射为compress_level(1→9,100→0)

默认值: 85

调用示例

下面的代码展示了如何使用 daft 运行算子对图像做黑边裁剪。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.image.image_blackborder_crop import ImageBlackBorderCrop
from daft.las.functions.udf import las_udf

if __name__ == "__main__":
    # 内容会保存到指定的TOS路径下,因此,需要设置好环境变量以保证有权限写入TOS,包括:ACCESS_KEY,SECRET_KEY,TOS_ENDPOINT,TOS_REGION,TOS_TEST_DIR
    TOS_DIR = os.getenv("TOS_TEST_DIR", "tos_bucket")
    output_tos_dir = f"tos://{TOS_DIR}/image/image_blackborder_crop"

    if os.getenv("DAFT_RUNNER", "native") == "ray":
        import logging

        import ray

        def configure_logging():
            logging.basicConfig(
                level=logging.INFO,
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                datefmt="%Y-%m-%d %H:%M:%S.%s".format(),
            )
            logging.getLogger("tracing.span").setLevel(logging.WARNING)
            logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
            logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.set_runner_ray()

    daft.set_execution_config(actor_udf_ready_timeout=600)
    daft.set_execution_config(min_cpu_per_task=0)

    tos_dir_url = os.getenv("TOS_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com")
    samples = {
        "image": [f"https://{tos_dir_url}/public/shared_image_dataset/test_blackborder.png"],
        "image_name": ["cat_with_border_crop"],
    }

    image_suffix = ".jpg"
    image_src_type = "image_url"
    detect_algorithm = "auto"
    black_threshold = 10
    edge_sensitivity = 1.0
    min_border_size = 1
    target_dpi = [72, 72]
    ds = daft.from_pydict(samples)
    ds = ds.with_column(
        "image_blackborder_crop",
        las_udf(
            ImageBlackBorderCrop,
            construct_args={
                "image_suffix": image_suffix,
                "output_dir": output_tos_dir,
                "image_src_type": image_src_type,
                "detect_algorithm": detect_algorithm,
                "black_threshold": black_threshold,
                "edge_sensitivity": edge_sensitivity,
                "min_border_size": min_border_size,
                "target_dpi": target_dpi,
            },
            batch_size=1,
        )(col("image"), col("image_name")),
    )

    ds.show()
# ╭────────────────────────────────┬──────────────────────┬────────────────────────────────────────────╮
# │ image                          ┆ image_name           ┆ image_blackborder_crop                     │
# │ ---                            ┆ ---                  ┆ ---                                        │
# │ String                         ┆ String               ┆ Struct[base64: String, image_path: String] │
# ╞════════════════════════════════╪══════════════════════╪════════════════════════════════════════════╡
# │ https://las-ai-qa-online.tos-… ┆ cat_with_border_crop ┆ {base64: /9j/4AAQSkZJRgABAQEA…             │
# ╰────────────────────────────────┴──────────────────────┴────────────────────────────────────────────╯
最近更新时间:2026.02.10 15:51:19
这个页面对您有帮助吗?
有用
有用
无用
无用