当前位置: 首页 > java >正文

[ubuntu][C++]onnxruntime安装cpu版本后测试代码

下载官方预编译包后,怎么用呢。可以参考这个源码跑

测试环境:

ubuntu22.04

onnxruntime==1.18.0

测试代码:

CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(onnx_test)# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
SET (ONNXRUNTIME_DIR /home/limrobot/onnxruntime-linux-x64-1.18.0)
# 查找ONNX Runtime
#find_package(ONNXRuntime REQUIRED)# 添加可执行文件
add_executable(onnx_test main.cpp)# 链接ONNX Runtime库
target_link_libraries(onnx_test PRIVATE ${ONNXRUNTIME_DIR}/lib/libonnxruntime.so)# 包含目录
target_include_directories(onnx_test PRIVATE ${ONNXRUNTIME_DIR}/include)# 复制模型文件到构建目录
configure_file(yolov8n.onnx ${CMAKE_BINARY_DIR}/yolov8n.onnx COPYONLY)

main.cpp

#include <onnxruntime_cxx_api.h>
#include <iostream>
#include <vector>
#include <stdexcept>int main() {try {// 初始化ONNX Runtime环境Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test");Ort::SessionOptions session_options;// 设置线程数session_options.SetIntraOpNumThreads(1);session_options.SetInterOpNumThreads(1);// 加载模型Ort::Session session(env, "yolov8n.onnx", session_options);// 使用AllocatorOrt::AllocatorWithDefaultOptions allocator;// 打印输入信息size_t num_input_nodes = session.GetInputCount();std::cout << "Number of inputs: " << num_input_nodes << std::endl;for(size_t i = 0; i < num_input_nodes; i++) {// 获取输入名称auto input_name = session.GetInputNameAllocated(i, allocator);auto input_type_info = session.GetInputTypeInfo(i);auto input_tensor_info = input_type_info.GetTensorTypeAndShapeInfo();auto input_dims = input_tensor_info.GetShape();std::cout << "Input " << i << " name: " << input_name.get() << std::endl;std::cout << "Input shape: ";for(auto dim : input_dims) {std::cout << dim << " ";}std::cout << std::endl;std::cout << "Input type: " << input_tensor_info.GetElementType() << std::endl;}// 打印输出信息size_t num_output_nodes = session.GetOutputCount();std::cout << "Number of outputs: " << num_output_nodes << std::endl;for(size_t i = 0; i < num_output_nodes; i++) {// 获取输出名称auto output_name = session.GetOutputNameAllocated(i, allocator);auto output_type_info = session.GetOutputTypeInfo(i);auto output_tensor_info = output_type_info.GetTensorTypeAndShapeInfo();auto output_dims = output_tensor_info.GetShape();std::cout << "Output " << i << " name: " << output_name.get() << std::endl;std::cout << "Output shape: ";for(auto dim : output_dims) {std::cout << dim << " ";}std::cout << std::endl;std::cout << "Output type: " << output_tensor_info.GetElementType() << std::endl;}std::cout << "ONNX Runtime test completed successfully!" << std::endl;} catch (const std::exception& e) {std::cerr << "Error: " << e.what() << std::endl;return 1;}return 0;
}

运行结果:

http://www.xdnf.cn/news/20192.html

相关文章:

  • 扫描件、PDF、图片都能比对!让文档差异无所遁形
  • TDengine 时间函数 TODAY() 用户手册
  • Next.js 介绍:为什么选择它来构建你的下一个 Web 应用?
  • 开发环境 之 编辑器、编译器、IDE梳理
  • 深度解读:PSPNet(Pyramid Scene Parsing Network) — 用金字塔池化把“场景理解”装进分割网络
  • 【c++】c++第一课:命名空间
  • uni-app 项目 iOS 上架效率优化 从工具选择到流程改进的实战经验
  • 从零开始的python学习——字典
  • 永磁同步电机负载估计算法--非线性扩张状态观测器
  • 看见世界的另一种可能:Deepoc星眸(StarGaze)如何为视障生活带来曙光
  • Onlyoffice集成与AI交互操作指引(Iframe版)
  • 美团发布 | LongCat-Flash最全解读,硬刚GPT-4.1、Kimi!
  • 标签系统的架构设计与实现
  • Oracle软件在主机平台的应用(课程下载)
  • 请求超过Spring线程池的最大线程(处理逻辑)
  • 企业级项目管理方法设计指南
  • Scikit-learn Python机器学习 - 特征预处理 - 标准化 (Standardization):StandardScaler
  • 音视频面试题集锦第 38 期
  • 电影级文字生视频核心代码手册
  • CASToR 生成的文件进行转换
  • 1.数据库介绍
  • java面试:有了解过数据库事务吗,能详细讲一讲么
  • 四川地区燃气从业人员考试题库及答案
  • Redis中的hash数据类型
  • 在LangChain中无缝接入MCP服务器扩展AI智能体能力
  • 从零开始的云计算生活——第五十九天,基于Jenkins自动打包并部署Tomcat环境
  • 浅析多模态标注对大模型应用落地的重要性与标注实例
  • 图像的几种成像方式简介
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十六)windows平台运行时隐藏控制台
  • 手把手教你用Go打造带可视化的网络爬虫