跳到主要内容

类型

ImageDesc / ImageFormat / SessionOptions / AiEnvCheck。数据一律走属性。

ImageFormat

public enum ImageFormat
{
Auto = 0, // 按字节魔数自嗅探编码格式(JPG/PNG/BMP)。裸缓冲禁止用 Auto
Encoded = 1, // 显式声明为已编码字节流(JPG/PNG/BMP);行为同 Auto
Rgb888 = 2, // 裸缓冲,RGB 三通道 8bit,须给宽高
Bgr888 = 3, // 裸缓冲,BGR 三通道 8bit,须给宽高
}

ImageDesc

只读结构体。Auto / EncodedWidth / Height / Stride 忽略(填 0);Rgb888 / Bgr888 时宽高必填(>0),Stride = 0 表示紧凑排列(= Width * 3)。

类别属性类型访问说明
属性FormatImageFormat只读图像输入格式。Auto/Encoded 时 Width/Height/Stride 忽略(填 0)
Widthuint只读裸缓冲宽。Rgb888/Bgr888 时必填(>0)
Heightuint只读裸缓冲高。Rgb888/Bgr888 时必填(>0)
Strideuint只读每行字节数。0 = 紧凑排列(= Width×3)

ImageDesc.Auto()

public static ImageDesc Auto()

编码字节流,按魔数自嗅探。裸缓冲禁止用 Auto。

示例:

var jpg = ImageDesc.Auto();

ImageDesc.Encoded()

public static ImageDesc Encoded()

显式编码字节流(JPG/PNG/BMP);行为同 Auto。

ImageDesc.Rgb888()

public static ImageDesc Rgb888(uint width, uint height, uint stride = 0)

裸 RGB888。stride = 0 表示紧凑。

参数:

  • width (uint) — 宽(必填,>0)
  • height (uint) — 高(必填,>0)
  • stride (uint) — 每行字节数;默认 0 = 紧凑(= width * 3

返回值:

  • ImageDesc — 图像描述

ImageDesc.Bgr888()

public static ImageDesc Bgr888(uint width, uint height, uint stride = 0)

裸 BGR888(工业相机常见)。stride = 0 表示紧凑。

参数:

  • width (uint) — 宽(必填,>0)
  • height (uint) — 高(必填,>0)
  • stride (uint) — 每行字节数;默认 0 = 紧凑(= width * 3

返回值:

  • ImageDesc — 图像描述

示例:

var bgr = ImageDesc.Bgr888(width: 1920, height: 1080, stride: 0);
Console.WriteLine($"{bgr.Format} {bgr.Width}x{bgr.Height} stride={bgr.Stride}");

SessionOptions

会话打开选项。只含运行时调度参数;模型元数据一律从 会话属性 读,禁止调用方填写。全 0 = Core 默认(不钉线程数、不设亲和)。Size 由绑定自动填,调用方不要填。

类别属性类型访问说明
SessionOptionsIntraOpThreadsintinit算子内并行线程数。0 = Core / Provider 默认;自动上限 min(硬件逻辑核, 4);<0 契约违反
InterOpThreadsintinit图级并行线程数。0 = 默认;规则同 IntraOpThreads
CpuAffinityMaskulonginitCPU 亲和位图(bit0 = 逻辑核 0)。0 = 不设亲和。只约束本会话线程,不写系统隔离

IntraOpThreads

public int IntraOpThreads { get; init; }

算子内并行线程数。0 = Core / Provider 默认;自动上限 min(硬件逻辑核, 4)<0 契约违反。

默认值: 0

InterOpThreads

public int InterOpThreads { get; init; }

图级并行线程数。0 = 默认;规则同 IntraOpThreads

默认值: 0

CpuAffinityMask

public ulong CpuAffinityMask { get; init; }

CPU 亲和位图(bit0 = 逻辑核 0)。0 = 不设亲和。只约束本会话推理线程池,不写任何系统隔离设置。

默认值: 0

备注

禁止改 Windows ReservedCpuSets,禁止动 PLC 隔离核。

示例:

using var session = AiSession.OpenEx(
"model.darmodel",
keyPath: "model.darmkey",
options: new SessionOptions
{
IntraOpThreads = 2,
InterOpThreads = 1,
CpuAffinityMask = 0,
});

AiEnvCheck

AiEnvironment.Check / EnsureReady 的返回值。不下载、不改盘(Check);字段全部是属性。

类别属性类型访问说明
AiEnvCheckRecommendedstring只读按硬件推荐的 Provider(onnx-cuda / onnx-directml / onnx-openvino / onnx-cpu)。不推荐 edge-rknn
Readybool只读推荐 Provider 是否已在 Env 安装
Installedstring[]只读已装 Provider id 列表
GpuModelstring只读GPU 型号;无独显为空串
Messagestring只读给人看的中文结论
public string Recommended { get; init; }

按硬件推荐的 Provider(onnx-cuda / onnx-directml / onnx-openvino / onnx-cpu)。不推荐 edge-rknn

Ready

public bool Ready { get; init; }

推荐 Provider 是否已在 Env 安装。

Installed

public string[] Installed { get; init; }

已装 Provider id 列表。

GpuModel

public string GpuModel { get; init; }

GPU 型号;无独显为空串。

Message

public string Message { get; init; }

给人看的中文结论。

示例:

AiEnvCheck env = AiEnvironment.Check();
if (!env.Ready)
Console.WriteLine(env.Message);