# включить заголовочные файлы С++ в opencv

Я просто использую

#include <opencv2/opencv.hpp>

и все сработало. Могу ли я спросить, зачем нам это делать:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>

И почему здесь файлы *.hpp, но не *.h файлы?

Простите, что я задал такие простые вопросы.

Ответ 1

.hpp - это заголовок для языковых файлов языка С++. Поскольку OpenCV имеет длинную историю API C параллельно с С++, можно легко понять, почему люди, пишущие библиотеку, выбрали это расширение , избегая путаницы.. p >

Что касается вопроса о глобальном или малом включении, вам нужно вспомнить, как все работает на C/С++. Заголовочные файлы просто скопированы в ваш .c файл перед компиляцией.

  • Когда вы используете глобальный include opencv.hpp (который является своего рода зонтиком, поскольку он включает в себя все остальные), все файлы заголовков библиотеки включены и, таким образом, скопированы в ваш .cpp файл. Это означает, что вам не нужно печатать, но, в конце концов, более крупный файл для компилятора. Следовательно, время компиляции больше.
  • Когда вы используете локальные файлы заголовков, вы просто добавляете один модуль OpenCV за раз. Таким образом, если вы ограничиваете себя модулями, которые вам действительно нужны, у вас есть более быстрая компиляция. Другим преимуществом является то, что вы действительно можете знать, какие модули вы используете в своей программе, что поможет вам ввести соответствующие правильные компоновщики, например -lopencv_core -lopencv_imgproc, если вы используйте только модуль обработки изображений.

Ответ 2

просто откройте файл opencv2/opencv.hpp, и я думаю, вы получите ответ.

Ответ 3

#include <opencv2/opencv.hpp>

Этот заголовочный файл включает все остальные файлы заголовков в OpenCV в его теле. Итак, если вы включите этот файл, его более чем достаточно.

". h" для C и ".hpp" для С++. Это просто стандарт.