跳到主要内容

YOLO函数

说明

yolov8Api.newYolov8 初始化yolov8实例

  • 初始化yolov8实例
  • 适配EC 脱机 4.3.0+
  • @return Yolov8Util 对象
function main() {
// 初始化YOLO实例
let yolov8s = yolov8Api.newYolov8();
// 初始化配置选项
let config = yolov8s.getDefaultConfig("yolov8s-640", 640, 0.25, 0.35, "ALL", 0, [
"aixin",
"pinglun"
])
logd("config : " + JSON.stringify(config))
// 初始化 训练过的模型
// 这里仅仅是是做演示的,例如把模型文件放到脚本的res目录
// 运行的时候复制到手机的存储,进行使用 也可以从 网络下载
let param = file.getSandBoxFilePath("model.ncnn.param")
let bin = file.getSandBoxFilePath("model.ncnn.bin")
let img1 = file.getSandBoxFilePath("1.png")
let img2 = file.getSandBoxFilePath("2.png")
saveResToFile("model.ncnn.param", param)
saveResToFile("model.ncnn.bin", bin)
// 模拟复制测试图片
saveResToFile("1.png", img1)
saveResToFile("2.png", img2)

let inted = yolov8s.initYoloModel(config, param, bin);
if (inted) {
logd("初始化yolov8s成功");
} else {
logd("初始化yolov8s失败: " + yolov8s.getErrorMsg());
return;
}
// 读图片
let bitmap = image.readImage(img1);
// 或者 开启自动化服务后 抓屏幕图片
//let bitmap = image.captureFullScreenEx({type:1,quality:100})
let result = yolov8s.detectImage(bitmap, []);
// 或者用
// let img = image.readImage("c:/a.png")
// let result2 = yolov8s.detectImage("c:/a.png", [])
image.recycle(bitmap);
// 这个带参数的代表只过滤pinglun的分类数据
//let result = yolov8s.detectBitmap(bitmap, ["pinglun"]);
if (result == null || result == "") {
logd("yolov8s 无结果: " + yolov8s.getErrorMsg());
} else {
logd("yolov8s 结果: " + result);
}
// 在需要的时候释放,不要用一次释放一次
yolov8s.release();
}

main();

Yolov8Util.getDefaultConfig 获取 yolov8 默认配置

  • 获取 yolov8 默认配置
  • 适配EC 脱机 4.3.0+
  • @param model_name 模型名称 默认写 yolov8s-640 即可
  • @param input_size yolov8训练时候的imgsz参数,默认写640即可
  • @param box_thr 检测框系数,默认写0.25即可
  • @param iou_thr 输出系数,,默认写0.35 即可
  • @param bind_cpu 是否绑定CPU,选项为ALL,BIG,LITTLE 三个,默认写ALL
  • @param use_vulkan_compute 是否启用硬件加速,1是,0否 默认写0即可
  • @param obj_names JSON数组,训练的时候分类名称例如 ["star","common","face"]
  • @return JSON数据
   代码例子请看 `初始化yolov8实例`

Yolov8Util.initYoloModel 初始化yolov8模型

  • 初始化yolov8模型
  • 具体如何生成param和bin文件,请参考文件的yolo使用章节,通过yolo的pt转成ncnn的param、bin文件
  • 适配EC 脱机 4.3.0+
  • @param map 参数表 参考 getDefaultConfig函数获取默认的参数
  • @param paramPath param文件路径
  • @param binPath bin文件路径
  • @return boolean true代表成功 false代表失败
   代码例子请看 `初始化yolov8实例`

Yolov8Util.detectBitmap 检测图片

  • 检测图片 UIImage 的 iOS图片对象
  • 适配EC 脱机 4.3.0+
  • 返回数据例如
  • [{"name":"heart","confidence":0.92,"left":957,"top":986,"right":1050,"bottom":1078}]
  • name: 代表是分类,confidence:代表可信度,left,top,right,bottom代表结果坐标选框
  • @param bitmap 安卓的bitmap对象
  • @param obj_names JSON数组,不写代表不过滤,写了代表只取填写的分类
  • @return string 字符串数据
   代码例子请看 `初始化yolov8实例`

Yolov8Util.detectImage 检测AutoImage

  • 检测图片
  • 适配EC 脱机 4.3.0+
  • 返回数据例如
  • [{"name":"heart","confidence":0.92,"left":957,"top":986,"right":1050,"bottom":1078}]
  • name: 代表是分类,confidence:代表可信度,left,top,right,bottom代表结果坐标选框
  • @param image AutoImage对象
  • @param obj_names JSON数组,不写代表不过滤,写了代表只取填写的分类
  • @return string 字符串数据
   代码例子请看 `初始化yolov8实例`

Yolov8Util.release 插入数据

  • 释放yolov8资源
  • 适配EC 脱机 4.3.0+
  • @return boolean
   代码例子请看 `初始化yolov8实例`
释放函数在脚本结束的的时候释放,无需要每次使用都释放

Yolov8Util.getErrorMsg 获取YOLOV8错误消息

  • 获取YOLOV8错误消息
  • 适配EC 脱机 4.3.0+
  • @return string 字符串
   代码例子请看 `初始化yolov8实例`