Что означает это утверждение в opencv? - PullRequest
1 голос
/ 13 марта 2011

k, это своего рода нуб, потому что я действительно не работал над C и не ставил перед собой цель c.

Mat mymat(myIplImage, true);

Это, очевидно, не только объявляет mymat как локальную переменную, но также копирует содержимое из myIplImage. Проблемы, которые я не могу сделать из синтаксиса. Мне было бы удобнее, если бы это было что-то вроде этого:

Mat mymat = new Mat(myIplImage, true); // in c++

Можете ли вы объяснить, что произошло в фоновом режиме для исходного утверждения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

Как сказал Саймон, первая версия управляет выделением памяти для вас.В первой версии за кулисами, вероятно, есть вызов new или malloc или что-то подобное в конструкторе, и вызов delete или free в деструкторе для Mat.Таким образом, если вы просто делаете один мат (в отличие от массива из них), вам не нужно много думать о распределении.

Имейте в виду, что вы всегда можете взглянуть на источник конструктора Mat или любых других частей OpenCV, если вам когда-нибудь захочется получить все подробности.

2 голосов
/ 13 марта 2011

На самом деле это C ++. Первое утверждение в основном то же самое, что и второе, за исключением того, что вы сами не обращаетесь с памятью, то есть вам не нужно delete mymat, когда оно вам больше не нужно, оно будет уничтожено автоматически, когда оно выходит за рамки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...