算子ID:daft.las.functions.image.image_blackborder_crop.ImageBlackBorderCrop
图像黑边检测裁剪处理器,支持多种检测算法和输出格式。
细分项 | 注意与前提 |
|---|---|
费用 | 调用算子前,您需先了解使用算子时的模型调用费用,详情请参见大模型调用计费。 |
鉴权(API Key) | 调用算子前,您需要先生成算子调用的API Key,并建议将API Key配置为环境变量,便于更安全地调用算子,详情请参见获取 API Key 并配置。 |
BaseURL | 调用算子前,您需要先根据您当前使用的LAS服务所在地域,了解算子调用的BaseURL,用于配置算子调用路径参数取值。 |
输入列名 | 说明 |
|---|---|
image | 包含输入图像的数组,支持URL/base64/二进制格式 |
image_name | 可选参数,包含图像标识名的数组,用于生成输出文件名。 |
包含处理结果的字典数组,每个元素包含:
如参数没有默认值,则为必填参数
参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
image_suffix | str | .jpg | 保存到 TOS/本地 的图像格式。 |
output_dir | str | "" | 保存图像的输出文件夹路径。 |
image_src_type | str | image_url | 输入图像的格式类型。 |
detect_algorithm | str | auto | 黑边检测算法。 |
black_threshold | int | 10 | 灰度阈值(仅threshold/auto算法生效)。 |
edge_sensitivity | float | 1.0 | 边缘检测灵敏度(仅edge/auto算法生效)。 |
min_border_size | int | 1 | 最小黑边尺寸(像素)。 |
target_dpi | list | [72, 72] | 图像 DPI。 |
quality | int | 85 | 保存质量参数(适配不同格式):
默认值: 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… │ # ╰────────────────────────────────┴──────────────────────┴────────────────────────────────────────────╯