图像检测与识别

更新时间:
复制 MD 格式

目标检测、图像分割、文字识别和子图检测函数。

本文函数由 Python 多模态函数库提供(VVR 11.8+),使用前需在 SQL 作业开头添加:

LOAD MODULE python;
USE MODULES python, core;

完整示例与IMAGE类型请参见图像函数使用概述。

函数一览

函数

说明

IMAGE_DETECT_OBJECTS

使用 YOLO 检测目标物体

IMAGE_SEGMENT

使用 FastSAM 生成图像分割掩码

IMAGE_OCR

使用 EasyOCR 从图像中提取文字

IMAGE_DETECT_SUBPLOT

判断图像是否为拼接图并返回子图数量

IMAGE_DETECT_OBJECTS

使用 YOLO 检测目标物体。

IMAGE_DETECT_OBJECTS(image_input [, model [, confidence [, imgsz [, iou]]]])

参数

类型

默认值

说明

image_input

IMAGE

必填

解码后的图像。

model

STRING NOT NULL

'yolov8n'

YOLO 模型名称或路径。

说明

目前仅支持默认模型。

confidence

DOUBLE NOT NULL

0.05

最小检测置信度,取值范围 [0, 1]。

imgsz

INT NOT NULL

640

模型推理分辨率。值越大越有利于检测小目标,但推理延迟和资源消耗也会增加。

iou

DOUBLE NOT NULL

0.5

NMS 的 IoU 阈值,取值范围 [0, 1]。

返回类型: ARRAY<ROW<label STRING, x DOUBLE, y DOUBLE, w DOUBLE, h DOUBLE, confidence DOUBLE>>

返回数组中的每个元素表示一个检测框:

字段

说明

label

目标类别名称。

x / y

检测框左上角坐标,单位像素。

w / h

检测框宽度和高度,单位像素。

confidence

检测置信度,范围 [0, 1]。

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

IMAGE

必填

解码后的图像。

model

STRING NOT NULL

'FastSAM-x.pt'

FastSAM 模型名称或路径。

说明

目前仅支持默认模型。

confidence

DOUBLE NOT NULL

0.05

最小置信度,取值范围 [0, 1]。

imgsz

INT NOT NULL

1024

模型推理分辨率。值越大越有利于保留小目标掩码细节,但推理延迟和资源消耗也会增加。

iou

DOUBLE NOT NULL

0.5

NMS 的 IoU 阈值,取值范围 [0, 1]。

返回类型: 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

IMAGE

必填

解码后的图像。

lang

ARRAY<STRING>

NULL

语言列表。NULL 表示使用默认英文配置 ARRAY['en']。

当前内置模型仅支持英文识别,如需识别更多语种,可使用通用调用。

返回类型: ARRAY<ROW<text STRING, confidence DOUBLE, bbox ARRAY<ARRAY<DOUBLE>>>>

返回数组中的每个元素表示一个文本区域:

字段

说明

text

识别出的文本内容。

confidence

OCR 置信度,范围通常为 [0, 1]。

bbox

文本区域四个角点坐标,形如 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]。

SELECT IMAGE_OCR(img, ARRAY['en']) FROM images;

IMAGE_DETECT_SUBPLOT

使用图像边缘和网格特征判断图像是否为拼接图、宫格图或子图,并返回估计的子图数量。

IMAGE_DETECT_SUBPLOT(image_input [, threshold])

参数

类型

默认值

说明

image_input

IMAGE

必填

解码后的图像。

threshold

DOUBLE NOT NULL

0.5

边缘检测阈值,取值范围 [0, 1];值越大要求边缘越强,判断越严格。

返回类型: ROW<is_subplot BOOLEAN, count INT>

字段

说明

is_subplot

是否检测到拼接/子图结构。

count

估计子图数量;非子图返回 1。

任意一条边小于 20 像素的图像会直接返回 is_subplot=FALSE、count=1。

SELECT IMAGE_DETECT_SUBPLOT(img).is_subplot, IMAGE_DETECT_SUBPLOT(img).count
FROM images;