[英]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.