YOLOv8/YOLOv5 Inference C++
This example demonstrates how to perform inference using YOLOv8 and YOLOv5 models in C++ with OpenCV's DNN API.
Usage
git clone ultralytics
cd ultralytics
pip install .
cd examples/YOLOv8-CPP-Inference
mkdir build
cd build
cmake ..
make
./Yolov8CPPInference
Exporting YOLOv8 and YOLOv5 Models
To export YOLOv8 models:
yolo export model=yolov8s.pt imgsz=480,640 format=onnx opset=12
To export YOLOv5 models:
python3 export.py --weights yolov5s.pt --img 480 640 --include onnx --opset 12
yolov8s.onnx:

yolov5s.onnx:

This repository utilizes OpenCV's DNN API to run ONNX exported models of YOLOv5 and YOLOv8. In theory, it should work for YOLOv6 and YOLOv7 as well, but they have not been tested. Note that the example networks are exported with rectangular (640x480) resolutions, but any exported resolution will work. You may want to use the letterbox approach for square images, depending on your use case.
The main branch version uses Qt as a GUI wrapper. The primary focus here is the Inference class file, which demonstrates how to transpose YOLOv8 models to work as YOLOv5 models.