В настоящее время я работаю над 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
Кто-нибудь сталкивался с такой же проблемой раньше? Какие решения я мог реализовать здесь?
Спасибо
Этот код:
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]);
Других решений пока нет …