最近在学习使用 OpenCV 进行行人检测,在随便测试时使用了 UCMerced_LandUse 数据集,突然发现其中的 .TIF 图片无法读取,然而其他的图片都可以读取,文件路径也是对的,但为什么就这个数据集中的图片无法读取呢?
调试了好久一直没能调试出来,最后我突然想到会不会是图片自身的问题,我点开图片的属性,发现这些图片的属性都是“只读”,在去掉这个勾后就能进行读取啦!具体原因不是很懂,猜测应该是Directory这个工具类需要更多的权限吧。
一个小问题郁闷了好久,学习之路任重道远啊!
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace cv;
using namespace std;
#define TRAIN true
int main(int argc, char** argv)
{
if(TRAIN)
{
//读取正样本
Directory dir;
string full_path;
string pos_path = "D:\\data\\OpenCV\\CV_DATASET\\Pedestrian detection\\pos\\";
vector<string> pos_filenames = dir.GetListFiles(pos_path, "*.TIF", false);
for (int i = 0; i < pos_filenames.size() ; i++)
{
full_path = pos_path + pos_filenames[i];
Mat img = imread(full_path,1);
cout<<full_path<<endl;
imshow(full_path,img);
waitKey(0);
}
}
}