Ответ 1
.hpp
- это заголовок для языковых файлов языка С++. Поскольку OpenCV имеет длинную историю API C параллельно с С++, можно легко понять, почему люди, пишущие библиотеку, выбрали это расширение , избегая путаницы.. p >
Что касается вопроса о глобальном или малом включении, вам нужно вспомнить, как все работает на C/С++. Заголовочные файлы просто скопированы в ваш .c файл перед компиляцией.
- Когда вы используете глобальный include
opencv.hpp
(который является своего рода зонтиком, поскольку он включает в себя все остальные), все файлы заголовков библиотеки включены и, таким образом, скопированы в ваш .cpp файл. Это означает, что вам не нужно печатать, но, в конце концов, более крупный файл для компилятора. Следовательно, время компиляции больше. - Когда вы используете локальные файлы заголовков, вы просто добавляете один модуль OpenCV за раз. Таким образом, если вы ограничиваете себя модулями, которые вам действительно нужны, у вас есть более быстрая компиляция. Другим преимуществом является то, что вы действительно можете знать, какие модули вы используете в своей программе, что поможет вам ввести соответствующие правильные компоновщики, например
-lopencv_core -lopencv_imgproc
, если вы используйте только модуль обработки изображений.