一、目的
上一篇中训练出了结果,是best.pt,参见:win10上yolov8训练自己的模型-CSDN博客。我需要在全平台使用,所以选用opencv加载,这就需要转为onnx
二、步骤
1、如何从best.pt转onnx,详细参数参考官网:ONNX -Ultralytics YOLOv8 文档 ,命令行为:
yolo export model=yolov8n.pt format=onnx
他这个转完能看到输出了imgsz是一个正方形1024x1024,我手动指定了640。这里有个猜测:这个参数应该是跟你训练的模型有关系,训练的时候没有指定图像大小,他就按照正方形来了,所以这里你指定1024*768他会说指定参数不生效,结果还是个正方形。
此时模型输出是[1,6,一个跟你像素有关的数字],和yolov5是不一样的,各位别按照5的写法去解析结果啊。
2、opencv4.8 c++ 加载并处理图像
这里找了很多资料,最后发现ultralytics-8.2.0的源码里就有,清晰明了,简介高效,真是“蓦然回首,那人却在,灯火阑珊处"。
在ultralytics-8.2.0\examples\YOLOv8-CPP-Inference目录下,用qt打开CMakeLists.txt,修改CMakeLists.txt为:
注释掉main.cpp的头文件,就能编译通过了:
源码是非OBB的,我改成了带角度的,输出的[1,6,n]的6就是[center.x, center.y ,width, height, scores, angle],只不过这个角度是弧度,要自己把他转成角度,代码如下:
这个文字还没写好...... 暂时先这样把
下一步验证跨平台。