Я использую Visual Studio 2010 с OpenCV 3.0. Я пытаюсь загрузить некоторые изображения из папки, но у меня возникают проблемы.Загрузка изображения из папки с использованием OpenCV 3.0 в Windows
Во-первых, у меня не было файла dirent.h, поэтому я загрузил его, чтобы получить структуры DIR * и «dirent *» для доступа к файлам. Кажется, все хорошо, но теперь, когда я добираюсь до линии
string fileName = in_file-> d_name;
Я обнаружил, что у меня нет доступа к имени файла.
У кого-нибудь есть мысли по этому поводу?
Это код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <opencv2/core/dirent.h>
#ifdef _WIN32
#include <io.h>
#else
#include <unistd.h>
#endif
#include <conio.h>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
#pragma comment(lib, "User32.lib")
#include <errno.h>
#include <iostream>
#include <time.h>
#include <limits.h>
#include <fstream>
#include <sys/stat.h>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/ml.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace cv::ml;
using namespace std;
int patchWidth = 15;
int patchHeight = 15;
int main(int, char**)
{
string imagesPath = "Images";
string resultsPath = "Patches";
DIR* FD;
struct dirent* in_file;
if (NULL == (FD = opendir (imagesPath.c_str())))
{
fprintf(stderr, "Error : Failed to open input directory\n");
return 0;
}
while ((in_file = readdir(FD)))
{
/* On linux/Unix we don't want current and parent directories
* If you're on Windows machine remove this two lines
*/
// if (!strcmp (in_file->d_name, "."))
// continue;
// if (!strcmp (in_file->d_name, ".."))
// continue;
/* Open directory entry file for common operation */
/* TODO : change permissions to meet your need! */
string fileName = in_file->d_name;
string pathFile = imagesPath;
pathFile.append("/");
pathFile.append(fileName);
//pathFile.append(".jpg");
Mat img = imread(pathFile.c_str());
Спасибо заранее.
Это не только проще, но это позволяет избежать необходимости линий для конкретных платформ, которые закомментированные в ОП. – Bampfer
@berak Я попробовал ваше предложение, но даже входит в цикл «for». Я понимаю, что «путь» на самом деле «imagesPath», нет? – JoseleMG
@JoseleMG «путь» - это папка с дополнительным фильтром для типов изображений, например * .jpg, если вы используете фильтр, он также будет игнорировать скрытые вещи, такие как «thumbs.db» на окнах – berak