繁体   English   中英

使用 OnnxRuntime Inference 的指针读取以 .raw 格式存储的图像时出现问题

[英]Issue with reading an image stored in .raw format using pointer for OnnxRuntime Inference

I was trying to run a OnnxRuntime Inference on a image file of jpg format using a pretrained Squeezenet model as illustrated in the blog: https://leimao.github.io/blog/ONNX-Runtime-CPP-Inference/ using the script in链接: https://github.com/leimao/ONNX-Runtime-Inference/blob/main/src/inference.cpp 它确实有效:

在此处输入图像描述

现在我需要将输入文件格式从 jpg 替换为 raw,但是这样做时我的结果根本不匹配,如下所示:


在此处输入图像描述

我使用 python 将 jpg 图像转换为原始图像,如下所示:

import numpy as np
from PIL import Image
img = Image.open("bee_eater.jpeg")
I = np.asarray(img)
I.astype('int16').tofile("bee_eater.raw")

在 cpp 脚本中,我正在加载原始文件,如下所示:

    void read_raw_file_array(const std::string filename, float *ptr1)
    {   ifstream myData(filename, ios::binary);
        float value;
        
        char buf[sizeof(float)];
        
        float *newptr = ptr1;
        while (myData.read(buf, sizeof(buf)))
        {
            memcpy(newptr, buf, sizeof(value));
            //cout << *newptr << " ";
            newptr++;
            
        }
        
    }

cv::Mat convert_to_Mat(float *input1)
{
    int rows = 224;
    int cols = 224;
    int channels = 3;
    cv::Size sz(cols,rows);
    cv::Mat mat1(sz,CV_8UC3, input1);
    

    return mat1;
}


int main(int argc, char* argv[])
{.
.
.
const std::string filename1 = "bee_eater.raw";


float *input1 = new float[1920*1281*3];
read_raw_file_array(filename1, input1);
cv::Mat mat1;
mat1 = convert_to_Mat(input1);

在使用这个新的 cv:Mat 文件进行进一步处理后,我的结果会有所不同,如屏幕截图所示。 看起来这可能是我使用原始文件内容的方式的问题,但不确定它可能是什么。 任何帮助将不胜感激解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM