У меня есть некоторый код, который просматривает каталог белых и черных изображений, читает его, изменяет его размер и затем помещает в вектор изображений.Однако, когда я вызываю изображения из вектора, это не работает.Он печатается так, как если бы оба изображения были белыми.Что я здесь не так делаю?Это связано с вектором?
vector<cv::Mat> images;
vector<cv::String> imageNames;
void prepareData(cv::String &directory)
{
cv::glob(directory, imageNames, false);
cv::Mat colorful, grey, out;
number = imageNames.size();
cout << "Number of images to train on " << number << endl;
for(size_t i = 0; i < number; i++)
{
colorful = cv::imread(imageNames[i]);
cv::resize(colorful, out, cv::Size(5, 5));
cv::cvtColor(out, grey, cv::COLOR_BGR2GRAY);
images.push_back(grey);
cout << grey << endl;
}
for (int i = 0; i < number; ++i)
{
cout << "IMAGE " << i << " " << images[i] << endl;
}
Вот вывод, который я получаю.2 изображения вначале показывают правильные значения пикселей изображения (23 -> черный, 255 -> белый), но во-вторых, когда я вспоминаю это из вектора, я получаю, что оба моих изображения белые.Что я делаю не так?
Number of images to train on 2
[23, 23, 23, 23, 23;
23, 23, 23, 23, 23;
23, 23, 23, 23, 23;
23, 23, 23, 23, 23;
23, 23, 23, 23, 23]
[255, 255, 255, 255, 255;
255, 255, 255, 255, 255;
254, 254, 255, 255, 255;
254, 255, 255, 255, 254;
255, 255, 255, 255, 255]
IMAGE 0 [255, 255, 255, 255, 255;
255, 255, 255, 255, 255;
254, 254, 255, 255, 255;
254, 255, 255, 255, 254;
255, 255, 255, 255, 255]
IMAGE 1 [255, 255, 255, 255, 255;
255, 255, 255, 255, 255;
254, 254, 255, 255, 255;
254, 255, 255, 255, 254;
255, 255, 255, 255, 255]