目标检测、图像分割、文字识别和子图检测函数。
本文函数由 Python 多模态函数库提供(VVR 11.8+),使用前需在 SQL 作业开头添加:
LOAD MODULE python;
USE MODULES python, core;完整示例与IMAGE类型请参见图像函数使用概述。
函数一览
函数 | 说明 |
使用 YOLO 检测目标物体 | |
使用 FastSAM 生成图像分割掩码 | |
使用 EasyOCR 从图像中提取文字 | |
判断图像是否为拼接图并返回子图数量 |
IMAGE_DETECT_OBJECTS
使用 YOLO 检测目标物体。
IMAGE_DETECT_OBJECTS(image_input [, model [, confidence [, imgsz [, iou]]]])参数 | 类型 | 默认值 | 说明 |
image_input |
| 必填 | 解码后的图像。 |
model |
|
| YOLO 模型名称或路径。 说明 目前仅支持默认模型。 |
confidence |
|
| 最小检测置信度,取值范围 |
imgsz |
|
| 模型推理分辨率。值越大越有利于检测小目标,但推理延迟和资源消耗也会增加。 |
iou |
|
| NMS 的 IoU 阈值,取值范围 |
返回类型: ARRAY<ROW<label STRING, x DOUBLE, y DOUBLE, w DOUBLE, h DOUBLE, confidence DOUBLE>>
返回数组中的每个元素表示一个检测框:
字段 | 说明 |
| 目标类别名称。 |
| 检测框左上角坐标,单位像素。 |
| 检测框宽度和高度,单位像素。 |
| 检测置信度,范围 |
SELECT CARDINALITY(IMAGE_DETECT_OBJECTS(img, 'yolov8n', 0.25, 640, 0.5))
FROM images;IMAGE_SEGMENT
使用 FastSAM 生成图像分割掩码。
IMAGE_SEGMENT(image_input [, model [, confidence [, imgsz [, iou]]]])参数 | 类型 | 默认值 | 说明 |
image_input |
| 必填 | 解码后的图像。 |
model |
|
| FastSAM 模型名称或路径。 说明 目前仅支持默认模型。 |
confidence |
|
| 最小置信度,取值范围 |
imgsz |
|
| 模型推理分辨率。值越大越有利于保留小目标掩码细节,但推理延迟和资源消耗也会增加。 |
iou |
|
| NMS 的 IoU 阈值,取值范围 |
返回类型: BYTES,PNG 编码的 8 位分割掩码。像素值 0 表示背景,1 到 255 表示不同分割区域编号,第 255 个及后续区域都使用值 255。
SELECT IMAGE_SEGMENT(img, 'FastSAM-x.pt', 0.05, 1024, 0.5) FROM images;IMAGE_OCR
使用 EasyOCR 从图像中提取文字。
IMAGE_OCR(image_input [, lang])参数 | 类型 | 默认值 | 说明 |
image_input |
| 必填 | 解码后的图像。 |
lang |
|
| 语言列表。 当前内置模型仅支持英文识别,如需识别更多语种,可使用通用调用。 |
返回类型: ARRAY<ROW<text STRING, confidence DOUBLE, bbox ARRAY<ARRAY<DOUBLE>>>>
返回数组中的每个元素表示一个文本区域:
字段 | 说明 |
| 识别出的文本内容。 |
| OCR 置信度,范围通常为 |
| 文本区域四个角点坐标,形如 |
SELECT IMAGE_OCR(img, ARRAY['en']) FROM images;IMAGE_DETECT_SUBPLOT
使用图像边缘和网格特征判断图像是否为拼接图、宫格图或子图,并返回估计的子图数量。
IMAGE_DETECT_SUBPLOT(image_input [, threshold])参数 | 类型 | 默认值 | 说明 |
image_input |
| 必填 | 解码后的图像。 |
threshold |
|
| 边缘检测阈值,取值范围 |
返回类型: ROW<is_subplot BOOLEAN, count INT>
字段 | 说明 |
| 是否检测到拼接/子图结构。 |
| 估计子图数量;非子图返回 1。 |
任意一条边小于 20 像素的图像会直接返回 is_subplot=FALSE、count=1。
SELECT IMAGE_DETECT_SUBPLOT(img).is_subplot, IMAGE_DETECT_SUBPLOT(img).count
FROM images;