我是一个关于在目录中阅读图像的工作。 在我的代码中,fd.name是可以的。 但是mat image0 = imread(fd.name)是NULL数据。 所以,image0为NULL 问题是什么?
struct _finddata_t fd;
intptr_t handle;
if ((handle = _findfirst(path.c_str(), &fd)) == -1L)
cout << "No file in directory!" << endl;
do
{
Mat image0 = imread(fd.name);
if (!image0.data)
continue;
Mat image;
cvtColor(image0, image, CV_BGR2GRAY);
const int width = image.cols;
const int height = image.rows;
vector<feature_P> vec;
SIFT(image, vec);
for (int i = 0; i < vec.size(); i++)
{
if (vec.at(i).x > 4 && vec.at(i).x < height - 4 && vec.at(i).y > 4 && vec.at(i).y < width - 4)
{
int result = LBP(image, vec.at(i).x, vec.at(i).y);
int fake = rand() % 250 + 100;
fprintf(fp, "+1 1:%d\n-1 1:%d\n", result, fake);
}
}
cout << fd.name << endl;
} while (_findnext(handle, &fd) == 0);
_findclose(handle);
答案 0 :(得分:1)
我猜fd.name
只是文件名,相对于path
,imread
可以&#39;#猜测&#34;您为_findfirst
您应该尝试打开path + "\\" + fd.name
(假设path
尚未以反斜杠结尾...)
例如:
std::string fullFileName = path + "\\" + fd.name;
Mat image0 = imread(fullFileName.c_str());
BTW:检查是否无法读取图像的正确方法是:
if(image.empty())