2017-06-03 7 views
1

私はOpenCV 2.4.12をインストールしましたが、約2日前にOpenCV 3.2がインストールされました。インストール手順(thisは私が従うガイドです)を実行した直後、私の古いopenCVコードは、コンパイルしようとしたときにcv関数を見つけることができなかったことを伝え続けます。明らかにリンカーエラーです。その後、私は2.4版で作業するはずだったので、ホームディレクトリにあるopencv-3.2.0フォルダを削除し、sudo makeを2.4.12フォルダにインストールし直しました。これはうまくいくように見えましたが、やはりcv関数が見つかりませんでした。OpenCVの再インストールの問題

これまでのところ自分で見つけたことがあります。

私のCMakeLists.txtにいくつかの変数が表示され、OpenCV_INCLUDE_DIRSが/ usr/include/opencv/usr/includeを指しています。これは明らかに問題です。しかし、今私はそれを修正する方法はありますか?私は無駄にこのラインを

セット($ {OpenCV_INCLUDE_DIRS}/USR /含む/ OpenCVの/)

やはりを使用して手動でその変数を設定しようとしました。

は、ここに私のCMakeLists.txtです:

cmake_minimum_required(VERSION 2.8) 
project(DisplayImage) 
find_package(OpenCV REQUIRED) 
set(${OpenCV_INCLUDE_DIRS} /usr/include/opencv/) 
include_directories(${OpenCV_INCLUDE_DIRS}) 
MESSAGE(STATUS "CMAKE_ROOT: " ${OpenCV_INCLUDE_DIRS}) 
add_executable(DisplayImage DisplayImage.cpp) 
SET(OpenCV_LIBS opencv_core opencv_highgui opencv_imgproc) 
target_link_libraries(DisplayImage ${OpenCV_LIBS}) 
MESSAGE(STATUS "CMAKE_ROOT: " ${OpenCV_LIBS}) 

そして、ここで私が使用しCMakeの構成があります。

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_CUBLAS=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON .. 

最後に、ここに私の設定fileがあります。

編集:私は gccのanalyze_video.cpp -o objDetection -lopencv_core -lopencv_imgproc -lopencv_objdetect -lopencv_highgui

を実行する場合にも、そして、すべての作品。だから私はライブラリを構築しましたが、私のCMakeの設定に何か問題があります。

答えて

0

OpenCV_INCLUDE_DIRSです。 CMakeでは、message(${OpenCV_INCLUDE_DIRS})は各リスト要素を間に区切り文字なしで出力します。さらにOpenCV_INCLUDE_DIRSはヘッダーへのパスであり、ライブラリーへのパスではありません。リンケージエラーは、関数が定義されている(すなわちヘッダーが見つかるが)シンボルがない(すなわち、必要なライブラリがリンクされていない)ときに発生する。

プロジェクトからのCMakeLists.txtファイルの内容、OpenCVビルドに使用されたCMake設定フラグ、またはGitHub Gistsなどへのリンクが大きすぎる場合は、質問を更新して問題を明確にしてください。あなたが提供する情報が多いほど、より速く誰かがあなたを助けることができます。

+0

@CraigScott、あなたの編集に感謝します。 –

+0

ああ、私は、ダブルインストールがインクルードパスに追加されていると考え、インクルードパスが無効になったと考えました。どのフォルダでバイナリが見つかるはずですか? INCLUDE_DIRS変数はインクルードディレクトリのベースを指しているのはなぜですか? – Tri

+0

@Tri、OpenCVを使って最小限のアプリケーションを構築する方法を教えてください: OpenCV build: 'cmake -DCMAKE_BUILD_TYPE = RELEASE .. && make -j4 && sudo make install'。 アプリケーションのCMakeListsには、OpenCV:find_package(OpenCV REQUIRED) '' target_link_libraries($ {CMAKE_PROJECT_NAME} $ {OpenCV_LIBS}) 'という2行しかありません。 FindOpenCV.cmakeなど何も必要ありません。 あなた自身でそれを再現できれば幸いです。特定のOpenCVモジュールをビルドする場合は、私の作業スクリプトです:goo.gl/p1snyO。ただし、モジュールが必要なものが有効であることを確認してください。 –