Я создал вектор std::vector<cv::Mat> main_layers;
, помещенный в класс. Вектор еще не инициирован. У меня также есть открытый участник cv::Mat source;
, инициированный в списке инициаторов конструктора. Теперь у меня есть метод копирования для копирования сегментов изображения в main_layers:Как заполнить вектор изображениями в OpenCV? C++
void copy(){
Rect roi;
auto primarySegment = main_layers.begin();
for (int c = 0; c< primaryKernelsLoad; c++)
{
if (heightPriority)
{
roi = Rect(0, c, size.width, segment1Size);
source(roi).copyTo(primarySegment);
auto nx = std::next(primarySegment, 2);
}
};
};
Здесь у меня есть ошибка: gaussian.cpp(133): error C2664: 'void cv::Mat::copyTo(cv::OutputArray) const' : cannot convert parameter 1 from 'std::_Vector_iterator<_Myvec>' to 'cv::OutputArray'
на линии с CopyTo. Как я могу получить массив из текущего изображения в векторе? Что касается C++ 98, с помощью Visual Studio 2010.
Эта проблема может быть легко решена с помощью 'источника (КОРОЛЬ) .copyTo (* primarySegment);' Итератор в основном указатель на элемент, поэтому вам нужно разыменовать его. –
BTW, 'auto' и' std :: next' из C++ 11, поэтому вы не должны использовать их, если хотите решение на C++ 98. –
@Ken: Ну, это скомпилировано с * primarySegment. Мне просто интересно, что Visual Studio 2010 скомпилировал C++ 11 - как я думал, VS2010 имеет стандарты C++ 98. Но если он скомпилирован без проблем, тогда все в порядке. Спасибо, вы можете отправить его в качестве ответа, чтобы я мог подняться. –