#qt #opencv #c 11 #qstring
#qt #opencv #c 11 #qstring
Вопрос:
Я пытался прочитать некоторые изображения в цикле, используя imread
в вектор Mat
(изображения) с opencv, получая имена файлов из вектора QString
, но он не будет компилироваться. Я знаю QString
, что проблема в моем формате, но, похоже, не могу ее решить. Я также пробовал … image = imread( image_vector[i] );
… и несколько других способов. Любая помощь приветствуется.
for ( unsigned int i = 0; i < image_names.size(); i )
{
image = imread( image_names.data()->at(i) );
if( !image.data )
{
qDebug()<< "Error";
}
else
{
image_vector.push_back( image );
}
}
Комментарии:
1. Что находится внутри
image_vector
? Похоже, вы одновременно считываете имена файлов из него, а также добавляете к нему cv-матрицы?2. Извините, я ввел неправильные имена, я отредактировал.
3. попробуйте что-то вроде
image_names[i].toStdString().c_str()
.4. Объявление imread таково:
CV_EXPORTS_W Mat imread( const stringamp; filename, int flags=1 );
итак, еслиimage_names
это массив или вектор QString, вы должны использовать:image = imread( image_names[i].toStdString() );
5. Правильно:
image_names.data()
возвращает указатель QString * иimage_names.data()->at(i)
возвращает i-й QChar первой QString вектора.
Ответ №1:
Для использования imread
вы должны передать std::string
ему.
Mat imread( const std::stringamp; filename, int flags=1 );
В вашем случае image_names
vector<QString>
таков правильный код :
image = imread( image_names[i].toStdString());