我们可以直接使用onnx路径加载模型,有时候我们可能会遇到内存流加载字节流情况,比如我可以对onnx加密然后通过内存解密加载,从而实现onnx保护而且不影响对onnx使用。以下是代码
测试环境:
vs2019
onnxruntime==1.12.0
代码部分:
#include <iostream>
#include<fstream>
#include<onnxruntime_cxx_api.h>
using namespace std;
using namespace Ort;
int main()
{
Ort::Env env;//创建env
Ort::Session session(nullptr);//创建一个空会话
Ort::SessionOptions sessionOptions{ nullptr };//创建会话配置
const wchar_t* model_path = L"D:\\yolov8s.onnx";
std::ifstream stream(model_path, std::ios::in | std::ios::binary);
std::vector<uint8_t> model_bytes((std::istreambuf_iterator<char>(stream)), std::istreambuf_iterator<char>());
session= Ort::Session(env, model_bytes.data(), model_bytes.size(), sessionOptions);
std::cout << "load model over!";
getchar();
}