25

私はちょうど使用します

#include <opencv2/opencv.hpp>

そして物事はうまくいきました。なぜ私たちが次のようにする必要があるのか​​ 尋ねてもよろしいですか:

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

そして、なぜ *.hpp ファイルがあって *.h ファイルではないのでしょうか?

このような簡単な質問をしてすみません。

4

3 に答える 3

30

.hppは、C++言語ヘッダー ファイルの規則です。OpenCV には、C++ API と並行して C APIの長い歴史があるため、ライブラリを作成している人々が混乱を避けるためにこの拡張機能を選択した理由を簡単に理解できます。

グローバル vs. スモール インクルードの質問については、C/C++ でどのように動作するかを思い出す必要があります。ヘッダー ファイルは、コンパイル前に .c ファイルにコピーされます。

  • グローバル インクルードopencv.hpp(他のすべてをインクルードするため、ある種の傘) を使用すると、すべてのライブラリ ヘッダー ファイルがインクルードされ、.cpp ファイルにコピーされます。これは、入力が少なくなることを意味しますが、最終的にはコンパイラのファイルが大きくなります。したがって、コンパイル時間が長くなります。
  • ローカル ヘッダー ファイルを使用する場合は、一度に 1 つの OpenCV モジュールを追加するだけです。したがって、実際に必要なモジュールに限定すると、コンパイルが高速になります。もう 1 つの利点は、プログラムで使用しているモジュールを実際に認識できることです。これにより、対応する正しいリンカーオプションを入力するのに役立ちます(たとえば、-lopencv_core -lopencv_imgproc画像処理モジュールのみを使用する場合)。
于 2013-10-04T09:27:11.247 に答える
7
#include <opencv2/opencv.hpp>

このヘッダー ファイルには、OpenCV の他のすべてのヘッダー ファイルが本体に含まれています。したがって、そのファイルを含めれば十分です。

.h」は C 用、「. hpp」は C++ 用です。これは単なる標準です。

于 2013-10-04T09:26:31.567 に答える
3

opencv2/opencv.hpp ファイルを開くだけで、答えが得られると思います。

于 2013-10-04T09:20:12.333 に答える