类型
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 / Encoded 时 Width / Height / Stride 忽略(填 0);Rgb888 / Bgr888 时宽高必填(>0),Stride = 0 表示紧凑排列(= Width * 3)。
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| 属性 | Format | ImageFormat | 只读 | 图像输入格式。Auto/Encoded 时 Width/Height/Stride 忽略(填 0) |
Width | uint | 只读 | 裸缓冲宽。Rgb888/Bgr888 时必填(>0) | |
Height | uint | 只读 | 裸缓冲高。Rgb888/Bgr888 时必填(>0) | |
Stride | uint | 只读 | 每行字节数。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 由绑定自动填,调用方不要填。
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| SessionOptions | IntraOpThreads | int | init | 算子内并行线程数。0 = Core / Provider 默认;自动上限 min(硬件逻辑核, 4);<0 契约违反 |
InterOpThreads | int | init | 图级并行线程数。0 = 默认;规则同 IntraOpThreads | |
CpuAffinityMask | ulong | init | CPU 亲和位图(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);字段全部是属性。
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| AiEnvCheck | Recommended | string | 只读 | 按硬件推荐的 Provider(onnx-cuda / onnx-directml / onnx-openvino / onnx-cpu)。不推荐 edge-rknn |
Ready | bool | 只读 | 推荐 Provider 是否已在 Env 安装 | |
Installed | string[] | 只读 | 已装 Provider id 列表 | |
GpuModel | string | 只读 | GPU 型号;无独显为空串 | |
Message | string | 只读 | 给人看的中文结论 |
Recommended
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);