opencv 3.0 Mat не предоставляет оператор нижнего индекса

В настоящее время я работаю над Opencv 3.0 C ++ в Xcode 7.2. У меня и код ошибки написан

Variable length array of non-POD element type cv::Mat

Пример кода был определен как ниже

Mat symbol[opts.numofblocksX*opts.numofblocksY];

Я должен изменить код на

Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];

и это показывает другую ошибку

cv::Mat doest not provide a subscript operator

Кто-нибудь сталкивался с такой же проблемой раньше? Какие решения я мог реализовать здесь?

Спасибо

1

Решение

Этот код:

cv::Mat symbol[opts.numofblocksX*opts.numofblocksY];

Определяет массив Matс размером opts.numofblocksX*opts.numofblocksY,

Вы получили ошибку, потому что размер этого массива не фиксирован во время компиляции, и это не Тип POD.

Ваш новый код неисправен.

cv::Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];

Это определяет один Mat называется символом, а затем бессмысленно пытается вызвать оператор [] на него с opts.numofblocksX * opts.numofblocksY в качестве аргумента. Это не объявление массива.

Представляются два очевидных варианта:

  • Выделите свой массив на куча, где разрешено распределение переменных размеров. Не забудь delete[] это позже! (или используйте умный указатель)

    cv::Mat *symbol = new cv::Mat[opts.numofblocksX * opts.numofblocksY];

  • Используйте std :: vector (рекомендуется):

    std::vector<cv::Mat> symbols(opts.numofblocksX * opts.numofblocksY]);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]