web-dev-qa-db-ja.com

opencvサンプルのコンパイル:不明なcmakeコマンドocv_check_dependencies

ソースパッケージに付属しているOpenCVサンプルをビルドしようとしていますが、次のようになります。

CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
  Unknown CMake command "ocv_check_dependencies".

OpenCVを使用してインストールしました

cmake .
make
Sudo make install

チュートリアルスニペットが機能するようになりました(したがって、ライブラリとして正しくインストールされていると思います)。ただし、サンプルのコンパイルは機能しません。

どういうわけかCMakeを「ocv_check_dependencies」を持つように構成する必要があると思いますが、どうすればよいでしょうか。迷っています!

13
scravy

わかった。

サンプルをビルドするには、-Dを介して提供することにより、cmakeのデフォルト構成を変更する必要があります。私が間違っていたのは、samplesディレクトリ内からcmakeを実行しようとしたことです。

サンプルをビルドする適切な方法は、そのようにcmakeを呼び出すことです(解凍されたアーカイブのルートディレクトリ内から):

cmake -DBUILD_SAMPLES .

サンプルがオンになります。 make、make installthanを使用して続行できます。サンプルは、ビルド後にbinにあります。

参照 [〜#〜] faq [〜#〜]

15
scravy

実際、OpenCV 2.4.4ベータ版の場合、ルートCMakeList.txtファイルには次のように書かれています。

OCV_OPTION(BUILD_EXAMPLES "すべての例を作成する"

-DBUILD_EXAMPLES=ON私にとってはうまくいきました。

16
Zzirconium

OpenCVサンプルコードをコンパイルする方法は?

# For OpenCV 3 
cd /path/to/opencv/samples/cpp/
#Compile
g++ -ggdb `pkg-config --cflags --libs opencv` facedetect.cpp -o facedetect
#run
./facedetect

私のために働きます。

このリンクからグーグルで検索

3
Xin Wang

理由

エラーメッセージのコンテキスト:

CMake Error at CMakeLists.txt:10 (ocv_check_dependencies):
  Unknown CMake command "ocv_check_dependencies".

このエラーメッセージは、cmakeがocv_check_dependenciesの定義を見つけることができないために発生します

それがコンソールが言った理由です不明なCMakeコマンド

解決

Cmakeがocv_check_dependenciesが定義されている場所を見つけられない場合

@Nick HockingsSaidのように:

ocv_check_dependenciesは、Your/OpenCV/path/OpenCVModule.cmakeで定義されたマクロです。

macro(ocv_check_dependencies)
  set(OCV_DEPENDENCIES_FOUND TRUE)
  foreach(d ${ARGN})
    if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
      set(OCV_DEPENDENCIES_FOUND FALSE)
      break()
    endif()
  endforeach()
endmacro()

最速の方法は、上のこのスニペットを、CMakeList.txtが存在するすぐ上のocv_check_dependenciesファイルにコピーすることです。

したがって、cmakeは最終的にそれが何であるかを理解することができます

それでうまくいくはずです。将来、他の誰もこの質問に煩わされないことを願っています。

1
WY Hsu

マクロ「ocv_check_dependencies」は次の場所で定義されています:your_path_to/opencv/cmake/OpenCVModule.cmake

# ensures that all passed modules are available
# sets OCV_DEPENDENCIES_FOUND variable to TRUE/FALSE
macro(ocv_check_dependencies)
  set(OCV_DEPENDENCIES_FOUND TRUE)
  foreach(d ${ARGN})
    if(d MATCHES "^opencv_[^ ]+$" AND NOT HAVE_${d})
      set(OCV_DEPENDENCIES_FOUND FALSE)
      break()
    endif()
  endforeach()
endmacro()

トップレベルのCMakeLists.txtには、opencv/cmake /のファイルに対する「include」コマンドが含まれています。これが、opencvソースのルートからcmakeを呼び出してコンパイルするときにマクロを使用できる理由です。

1
Nick Hockings

mydragonislandのビルド手順はほとんど私のために機能しました。マイナーな並べ替えとアクセントを含む:

g++ facedetect.cpp -o facedetect `pkg-config --libs opencv`
1
rasmusskov

次の手順は私のために働きます。

ツールチェーンパスをエクスポートします。

cd opencv-3.3.0/samples

cross_cmake && cross_make

cd opencv-3.3.0/samples/cpp /

0
Aspire

同様のエラーが発生しました。私のアプローチは次のとおりです:1)cd xxx/samples 2)mkdir build 3)cd build 4)cmake .. 5)makeこれで動作します。ソースファイルの下に個々のプロジェクトを構築することはできませんでした。

0
Roy