IplImage против CvMat

Я знаю, что многие люди заинтересованы в технической разнице между IplImage а также CvMat, (ДАНЕТ cv::Mat (*), но CvMat. Итак, давайте проясним различия с практической направленностью.

Является CvMat пересчитанная версия IplImage? Является CvMat только обертка вокруг IplImage? Если так, то почему они тоже развились? CvMat?

Я задал эти вопросы, потому что я видел IplImage будучи далеко, самым популярным в общих поисков и, на мой взгляд, также имеет большинство постов.

Какая польза от использования IplImage вместо новых структур?

(*) (Я поместил здесь также тег C++, так как многие люди используют его также с C++, а некоторые библиотеки предпочитают IplImage.)

3 ответа

Решение

IplImage пришло из библиотеки Intel Image Processing, согласно документам: http://opencv.willowgarage.com/documentation/basic_structures.html

Этот вопрос также касается CvMat структура, которая может вас заинтересовать: какова структура памяти cvMat в OpenCV?

Что касается того, что является более выгодным: в то время как могут быть небольшие различия скорости здесь или там с CvMat или же IplImage в разных контекстах - это зависит от того, что вы хотите сделать. Например, вам нужно разделить матричную структуру в памяти? Вам нужно эффективно сериализовать или искать и т. Д.? Приложение имеет значение.

(Теоретически, одно преимущество, предлагаемое IplImage является то, что из-за его родословной, как правило, он более совместим с существующими реализациями, как вы заметили.)

Я рекомендую вам прочитать параграф OpenCV Primitive Data Types из книги " Изучение OpenCV". Есть большое и хорошее объяснение различия между этими двумя типами данных.

Отвечая на ваш вопрос:

Какая польза от использования IplImage вместо новых структур?

Возможно нет. Его разработчики почему-то осуждают его, я думаю, причина, по которой вы все еще находите его, заключается в устаревшем коде; потому что люди все еще следуют старым образцам кода, не зная, что структура устарела, и потому что "Обучение OpenCV first edition" устарело в отношении сигнатур функций opencv и структур данных, но за ним все еще следит множество людей, начинающих с opencv.

Для справки: выпуск Learning OpenCV 2nd edition должен появиться в марте 2013 года, но не указывайте меня на это;)

Другие вопросы по тегам