Функция cv::glob
имеет следующую подпись:
void cv::glob(cv::String pattern, std::vector<cv::String>& result, bool recursive = false)
Поскольку pattern
передается по значению, а cv::String
может быть , составленным из std::string
, первый параметр не является проблемой. Временный cv::String
создается автоматически.
Тем не менее, второй - result
- есть, поскольку он принят как неконстантная ссылка. Чтобы решить вашу проблему, вам нужно сделать filename
a std::vector<cv::String>
. Так как он представляет собой коллекцию имен файлов, я бы также предложил использовать множественное число, чтобы назвать его: filenames
.
Пример кода:
#include <opencv2/opencv.hpp>
#include <string>
#include <vector>
int main()
{
std::string folder("/home/ragesh/C++ /calibration_laptop/images/*.jpg");
std::vector<cv::String> filenames;
cv::glob(folder, filenames, false);
// Do something with filenames...
return 0;
}
Обновление:
Я сделал вывод из подписи и тэгов вашего вопроса, что вы за OpenCV glob
(пример неполного кода делает это несколько затруднительным). Однако обратите внимание, что указанный вами заголовок предназначен для функции Posix glob
.
Есть хороший шанс, что это была еще одна причина проблем.
Для полноты позвольте мне перечислить остальные проблемы, которые я обнаружил в вашем примере кода:
- Отсутствует включает (opencv, строка)
- Отсутствуют квалификаторы пространства имен (
std::
или cv::
- избегать using namespace
на верхнем уровне )
- Нет
main()
- Код вне функции
- Куча другого несвязанного кода после соответствующего бита, который я не буду анализировать далее (но примерно 80% вашего примера кода не имеет значения).