web-dev-qa-db-fra.com

Ajouter une ligne à une matrice dans OpenCV

C'est une question très simple mais je n'ai pas trouvé la réponse dans Google ou dans la documentation OpenCV. Comment insérer une ligne avec un vecteur ou un nombre par défaut au bas d'un cv::Mat? J'ai essayé:

std::vector<double> v = {0, 0, 1};
m.Push_back(v);

qui compile, mais cela me fait toujours une erreur d'assertion. Quelle est la bonne façon de procéder?

17
Neptilo

L'élément ajouté doit être un Mat avec le même nombre de colonnes que la matrice de conteneur:

cv::Mat m = cv::Mat::ones(4, 3, CV_64F);    // 3 cols, 4 rows
cv::Mat row = cv::Mat::ones(1, 3, CV_64F);  // 3 cols, 1 row
m.Push_back(row);                           // 3 cols, 5 rows
40
ChronoTrigger