Размер матрицы (изображение) OpenCV - PullRequest
0 голосов
/ 09 марта 2020

Как получить размеры изображения (ширина и высота)?

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

cv::Mat mat;
int rows = mat.rows;
int cols = mat.cols;

cv::Size s = mat.size();
rows = s.height;
cols = s.width;

Являются ли эти два метода полностью эквивалентными в каждом случае?

В чем различия, если они есть?


Версия OpenCV: 4

1 Ответ

1 голос
/ 10 марта 2020

Два метода абсолютно одинаковы. Я полагаю, что эти функции существуют для удобства, так как есть несколько случаев, когда каждый метод полезен.

Например, чтобы создать новый cv::Mat того же размера, что и другой, его удобнее писать и легче читать

cv::Mat new_mat = cv::Mat(old_mat.size(), old_mat.type()) 

чем

cv::Mat new_mat = cv::Mat(old_mat.rows, old_mat.cols, old_mat.type()

Кроме того, я считаю, что нужно меньше вызовов функций. И это более удобно в использовании и легче читать с меньшим количеством вызовов функций

for(int i=0; i<old_mat.rows; i++)
   for(int j=0; l< old_mat.cols; j++)

, чем

for(int i=0; i<old_mat.size().width; i++)
   for(int j=0; j<old_mat.size().height; j++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...