【发布时间】:2022-12-17 15:34:54
【问题描述】:
我正在尝试使用 cnpy 的 npy_load 函数使用 cnpy 库(C++ 库)读取 .npy 文件。所有文件名的命名格式如下: 1234.4567.npy。 但是,npy_load 函数读取文件,用逗号替换第一个点,算法搜索文件名称: 1234,4567.npy。结果,它引发了以下错误: npy_load:无法打开文件 1234,4567.npy
使用 npy_load 的代码如下:
void getdescriptor(string filename,cv::Mat & descriptor,int nkeypoints){
cnpy::NpyArray arr = cnpy::npy_load(filename);
for(int i = 0 ; i < nkeypoints ; i ++){
float* pdata= descriptor.ptr<float>(i);
for(int j = 0 ; j < 256 ; j ++ ){
float temp = arr.data<float>()[i *256 + j];
pdata[j]= temp;
}
}
}
我该如何解决?
【问题讨论】:
-
你的地方是什么?
-
在调用
npy_load之前,您是否验证过filename是您在代码中所期望的? -
你确定 npy_load 正在这样做吗?
-
谢谢你的 cmets。 @molbdnilo,我已经验证文件名是我所期望的。我添加了一个 cout 语句以查看 npy_load 读取的实际名称是什么。奇怪的是前两个文件以正确的方式打印(带点),而下一个文件在 npy_load 之前以逗号打印,而在那之后,代码引发了上面提到的错误。我删除了那个文件,下一个文件的问题仍然存在。
-
从你的描述来看,文件名实际上是不是你所期望的,而不是
npy_load与他们混淆。你从哪里得到文件名?