2014-02-16 2 views
0
vector<Mat> images; 
vector<int> labels; 

Я предполагаю, что Mat является структурой для изображений и int является типом данных. Но что такое vector? Является ли это массивом двух измерений? Пожалуйста, простите мои сомнения заблаговременно.чем разница между следующими двумя линиями в OpenCV для изображений

ответ

0

vector<int> labels средство для векторов. Таким образом, всякий раз, когда вы хотите вставить элемент в этот вектор, вы получите его label.push_back(elementToBeInserted);.

И всякий раз, когда вы хотите получить доступ к элементам, присутствующих в этом векторе, вы можете сделать следующее:

for(int i=0; i<labels.size(); i++) 
{ 
    int element = labels[i]; 
    cout<<Element: <<element; 

} 

И подобное описание применимо для vector<Mat> images;. Еще одна вещь состоит в том, что Mat представляет Matrix, а изображения хранятся в виде матриц.

PS:vector< vector<int> >labels; будет представлять собой 2D векторной

+0

является вектор похож на массив, если да, то что дифф – user3309272

+0

, не вдаваясь в подробности программирования, я бы сказал, что они похожи, но главное отличие в том, что в случае 'vectors' вам не нужно указать размер. Всякий раз, когда вы хотите вставить элемент, вы делаете его с помощью 'label.push_back()' и он сохраняется в следующем доступном месте. Пожалуйста, воздержитесь/примите мой ответ, если это было полезно для вас. – skm

1

В C++ std::vector представляет собой последовательность контейнер, который инкапсулирует динамические массивы размера. Это 1 -dimension array, элементы которого хранятся смежно.

  • Для vector<Mat> images;, images объявляется массив из 1 -размерности, элементами которого являются cv::Mat с.

    Для определения массива таких элементов можно использовать vector<vector<Mat>> images_2d;.

  • Для vector<int> labels;, labels объявляется массив из 1 -размерности, элементами которого являются int с.

    Чтобы определить массив таких элементов, вы можете использовать vector<vector<int>> labels_2d;.

Смежные вопросы