AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)
若该文为原创文章,转载请注明原文出处。
在RK平台使用的是RKNN,但想要实现通用平台的yolov8部署
所以在ubuntu 20.04上编译了openvino,使用c++编译测试。
一、环境
根据yolov11提供的readme,需要符合的版本
二、安装 OpenVINO
1.1、创建或指定安装目录
建立一个 /opt/intel 目录用于安装,也可以指定其他目录
mkdir yolov8_cpp
1.2、下载 OpenVINO 安装包
通过以下命令下载并解压 x86_64 平台的安装包
wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2023.1/linux/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64.tgztar -xvzf l_openvino_toolkit_*.tgz
cd yolov8_cppmv l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64 openvino_2023.1.0
也可从 openvino-linux 手动下载并解压。
1.3、创建软链接(非必须)
为了方便,可以通过以下命令创建一个软链接,但不是必须的
sudo ln -s openvino_2023.1.0 openvino_2023
1.4、配置环境变量
source /home/yifeng/yolov8_cpp/openvino_2023/setupvars.sh
以上命令只在当前终端有效,当每打开一个新终端时,需要重新执行一遍。
如果需要配置永久有效,可将上述命令添加到 ~/.bashrc 文件的最后一行,如果系统中有多个版本的openvino,不推荐这样做。
出错:
Unsupported Python version 3.5. Please install one of Python 3.9 - 3.13 (64-bit) from https://www.python.org/downloads/ 升级python版本 https://blog.csdn.net/u012507643/article/details/124803753
# 我也使用的wget ,我下载到了home中
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
# 在home中解压
tar -zxf Python-3.9.0.tgz
# 进入python3.9
cd Python-3.9.0
# 编译文件 时间大概有1-3分钟
./configure --prefix=/usr/local/python3
# 编译好后,会有另外一个提示,让run ./configure xxx
./configure --enable-optimizations
# 安装
make && make install
# 结束
查看安装目录
which python3.9
修改Ubuntu默认python为python3.9.0
1、接着需要做的是,删除/usr/bin目录下的python link文件
sudo rm -rf /usr/bin/python
2、删除后再建立新的链接关系:这里python3.9需要改成你自己的目录。
sudo ln -s /usr/local/bin/python3.9 /usr/bin/python
在次配置环境OpenVINO正常
三、YOLOv8 C++ 编译测试
3.1、编译安装OpenCV
参考 ubuntu18.04 编译安装opencv3.4.8
ubuntu18.04 编译安装opencv3.4.8 - 知乎
1、下载源码
地址:Releases - OpenCV
wget -o opencv4.8.zip https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip
2、编译安装
参照 Install OpenCV-Python in Ubuntu,通过源码编译安装opencv,不需要支持python
sudo apt install -y g++ cmake make git libgtk2.0-dev pkg-config
unzip opencv-4.8.0.zip
cd opencv-4.8.0
mkdir build
cd build
cmake ..
make -j8
# 安装编译好的文件到系统相应目录
sudo make install
默认位置安装,将会安装系统如下目录
bin目录为可执行文件
lib是库文件,主要是以libopencv开头的so文件、文件夹:pkgconfig、python2.x、python3.x(pkgconfig里存放的是opencv.pc);
share里就两个文件夹:OpenCV和licenses
3.2、下载 ultralytics 源码
从 ultralytics 下载源码,并解压,文件目录如下
3.3、Cmake升级
ubuntu16.04 Cmake版本升级3.12_shengji cmake 3.12-CSDN博客
下载:Index of /files/v3.12
cd /downloadstar -zxvf cmake-3.12.0-Linux-x86_64.tar.gz
配置环境变量
vim ~/.bashrc
在文件末尾添加cmake3.12的路径;
export PATH=/home/yifeng/yolov8_cpp/cmake-3.12.0-Linux-x86_64/bin:$PATH
source ~/.bashrc
可以通过cmake --version查看版本

3.4、修改 CMakeLists.txt
修改 /home/yifeng/yolov8_cpp/ultralytics-main/examples/YOLOv8-CPP-Inference 目录中的 CMakeLists.txt 文件,将其中的 openvino 目录改为本机安装的目录,如
3.5、编译可执行文件
通过以下命令编译 detect 可执行文件
cd ultralytics-main/examples/YOLOv8-OpenVINO-CPP-Inference
mkdir build
cd build
cmake ..
make
执行成功后,将在build目录生成detect可执行文件
出错:
sudo apt remove libtbb-dev
sudo apt install libpugixml-dev # Ubuntu/Debian
3.6、准备 OpenVINO 模型(win11下导出)
导出openvino模型需要yolo环境,先安装ultralytics
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnx>=1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openvino-dev>=2023.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
在 ultralytics 环境中通过以下命令导出 openvino 模型
yolo export model=yolov8n.pt imgsz=640 format=openvino
执行成功后,将生成 yolov8n_openvino_model 目录,里面是转换成功的openvino模型
3.7、detect 测试
将上述转换成功的 yolov8n_openvino_model 目录复制到YOLOv8-OpenVINO-CPP-Inference 目录,同时准备一张测试图片,执行以下命令
./detect ../yolov8n_openvino_model/yolov8n.xml ../yolov8n_openvino_model/bus.jpg
执行该命令时发生 GLIBCXX_3.4.30 找不到的错误
./detect: /home/csp/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/intel/openvino_2025.0.0/runtime/lib/intel64/libopenvino.so.2500)
解决方法是通过以下命令将 libstdc++.so.6 所在目录加入到环境变量中
# 查找 libstdc++.so.6 所在目录
find /usr -name "libstdc++.so.6"
# 输出 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
# 将目录添加到环境变量
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
# 查看环境变量
echo $LD_LIBRARY_PATH
# 输出以下内容,说明添加成功
# /usr/lib/x86_64-linux-gnu:/opt/intel/openvino_2025.0.0/runtime/3rdparty/tbb/lib:/opt/intel/openvino_2025.0.0/runtime/lib/intel64
继续执行 detect 命令,报以下错误
原因是程序中需要将识别的结果图片显示出来,但终端没有安装图形界面,导致报错,解决办法是修改源代码重新编译执行,或者在 MobaXterm 终端中执行,可以正常显示,如
至此,说明openvino安装成功,且 yolov8 c++ 目标检测示例能够成功编译和执行。
四、参考
Ubuntu 安装 OpenVINO 及 YOLOv8 C++编译测试 - 知乎
Ubuntu系统下编译OpenCV4.8源码记录
ubuntu16.04 Cmake版本升级3.12_shengji cmake 3.12-CSDN博客
如有侵权,或需要完整代码,请及时联系博主。