我使用FindFirstFile
并FindNextFile
从<windows.h>
库中将文件夹的所有图像加载到矢量中。这将所有图像保存到向量中images
,但是当我想对向量执行任何操作(例如只是想显示它们)时,它会产生意外操作并迫使我中断代码的运行。
这是我的代码:
int _tmain(int argc, _TCHAR* argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
vector<Mat> images;
hFind = FindFirstFile("C:\\test\\*", &FindFileData);
if (hFind != INVALID_HANDLE_VALUE)
{
do {
images.push_back(imread(FindFileData.cFileName , 0));
} while( FindNextFile(hFind,&FindFileData));
}
//int vectorsize = (sizeof(images)/sizeof(Mat));
namedWindow("meh" , CV_WINDOW_AUTOSIZE);
imshow("meh" , images[3]);
waitKey(0);
/*for(int x = 1; x < 8; x++)
{
namedWindow("meh" , CV_WINDOW_AUTOSIZE);
imshow("meh" , images[x]);
waitKey(0);
}*/
/*vector<Mat>::iterator it;
for (it = images.begin(); it != images.end() ; it++) {
imshow("myWin", (*it));
waitKey(0);
}*/
FindClose(hFind);
return 0;
}
可以看出,我尝试使用迭代器处理向量,但它在imshow
.
然后我曾经sizeof
在向量中查找总元素但失败了(作为向量大小参数返回0
)
然后我从向量中选择了一个随机图像并尝试显示它,但在imshow
.
EDIT:
我不想测试文件夹包含 8 个图像,但循环运行 10 次。这是因为目录中的第一个和第二个文件是.
和..
(这在打印名称时显示cout
)这可能是导致中断的原因吗?如果是这样,我该如何解决它?