推理
对一张图跑推理。连续帧循环调用。阻塞调用,耗时随 Provider / 硬件而定,不承诺硬实时。
推理
InferImage(byte[] imageBytes, in ImageDesc desc)
public string InferImage(byte[] imageBytes, in ImageDesc desc)
public string InferImage(ReadOnlySpan<byte> imageBytes, in ImageDesc desc)
对一张图片跑推理,结果 JSON。byte[] 重载转给 ReadOnlySpan<byte>。每次一张图;连续帧循环调用。
参数:
imageBytes(byte[] / ReadOnlySpan<byte>) —Auto/Encoded= 编码文件字节流(JPG / PNG / BMP);裸缓冲 = 像素内存,长度必须 ≥stride * height(stride为 0 时按紧凑宽度计:RGB888 / BGR888 =width * 3)desc(ImageDesc) — 图像描述。Auto/Encoded时宽高 / stride 忽略(填 0)。Rgb888/Bgr888时宽高必填(>0)
返回值:
string— 结果 JSON。results元素结构随session.Task变化:detect → box,classify → top-k,segment → 掩码。托管副本,无需释放
备注
同一会话可并发调用;Dispose 禁止与在飞推理并发。裸缓冲禁止 ImageDesc.Auto()(嗅探不出通道序)。
示例:
using var session = AiSession.Open("model.darmodel", keyPath: "model.darmkey");
byte[] jpg = File.ReadAllBytes("photo.jpg");
string json = session.InferImage(jpg, ImageDesc.Auto());
Console.WriteLine(json);
byte[] frame = GrabBgrFrame();
var desc = ImageDesc.Bgr888(width: 1920, height: 1080, stride: 0);
string results = session.InferImage(frame, desc);
foreach (byte[] frame in GrabFrames())
{
string json = session.InferImage(frame, ImageDesc.Bgr888(1920, 1080));
}