最近在搞单目相机位姿估计,相机标定参考了【OpenCV3学习笔记 】相机标定函数 calibrateCamera( ) 使用详解(附相机标定程序和数据)提供的代码。
/*
@param File_Directory 为文件夹目录
@param FileType 为需要查找的文件类型
@param FilesName 为存放文件名的容器
*/
void getFilesName(string &File_Directory, string &FileType, vector<string>&FilesName)
{
string buffer = File_Directory + "\\*" + FileType;
_finddata_t c_file; // 存放文件名的结构体
long hFile;
hFile = _findfirst(buffer.c_str(), &c_file); //找第一个文件命
if (hFile == -1L) // 检查文件夹目录下存在需要查找的文件
printf("No %s files in current directory!\n", FileType);
else
{
string fullFilePath;
do
{
fullFilePath.clear();
//名字
fullFilePath = File_Directory + "\\" + c_file.name;
FilesName.push_back(fullFilePath);
} while (_findnext(hFile, &c_file) == 0); //如果找到下个文件的名字成功的话就返回0,否则返回-1
_findclose(hFile);
}
}
运行到
while (_findnext(hFile, &c_file) == 0);
时报错,参考_findnext()报错写入位置 0x000000000BE2A940 时发生访问冲突。x64环境下,句柄也在变化,要用_int64 定义句柄,而不是long。因此修改
//long hFile;
_int64 hFile;
问题解决