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 года, но не указывайте меня на это;)