2017-02-04 71 views
1

私はOpenCVを使い始めました。私はラズベリーパイとパイカメラを持っていて、マシンビジョンプロジェクトで使うOpenCVを学びたいと思っています。私はCでコードを書いています、viを使ってRaspberry Piで編集しました。私はLinuxには若干新しく、IDEではなくテキストエディタでコードを書くのは初めてです!opencvライブラリをリンクする際のトラブル

私はGithubからOpenCVレポをダウンロードし、それほど問題なくコンパイルすることができました。 OpenCV(3.2.0)がインストールされています。

私はここのチュートリアルに従うことによって開始:http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html#linux-gcc-usage

私はコードを正しく入力した後、CMakeのファイルを作りました。ここで

私のCMakeLists.txtファイルです:私はプロジェクトを作ってみましたが、誤りをリンクするライブラリがあるようです

cmake_minimum_required(VERSION 2.8) 
project(DisplayImage) 
find_package(OpenCV COMPONENTS core imgproc highgui REQUIRED) 
add_executable(DisplayImage DisplayImage.cpp) 
target_link_libraries(DisplayImage ${OpenCCV_LIBS}) 
LINK_DIRECTORIES("/usr/local/lib") 

。私は初心者で、バージョンの競合、ライブラリの欠落、リンカだけが間違った場所でライブラリを探しているかどうかを確認するのに問題があります。 makeコマンドが行われたときにここで

が出力されます。

[email protected]:~/Programming $ cmake . 
-- Found OpenCV: /usr/local (found version "3.2.0") found components:   core imgproc highgui 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /home/pi/Programming 
[email protected]:~/Programming $ make 
[ 50%] Linking CXX executable DisplayImage 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `main': 
DisplayImage.cpp:(.text+0x6c): undefined reference to `cv::imread(cv::String const&, int)' 
DisplayImage.cpp:(.text+0xd4): undefined reference to `cv::namedWindow(cv::String const&, int)' 
DisplayImage.cpp:(.text+0x118): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)' 
DisplayImage.cpp:(.text+0x138): undefined reference to `cv::waitKey(int)' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::String::String(char const*)': 
DisplayImage.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x50): undefined reference to `cv::String::allocate(unsigned int)' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::String::~String()': 
DisplayImage.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): undefined reference to `cv::String::deallocate()' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::String::operator=(cv::String const&)': 
DisplayImage.cpp: (.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x30): undefined reference to `cv::String::deallocate()' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::Mat::~Mat()': 
DisplayImage.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x3c): undefined reference to `cv::fastFree(void*)' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::Mat::operator=(cv::Mat const&)': 
DisplayImage.cpp:(.text._ZN2cv3MataSERKS0_[_ZN2cv3MataSERKS0_]+0x140): undefined reference to `cv::Mat::copySize(cv::Mat const&)' 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `cv::Mat::release()': 
DisplayImage.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x68): undefined reference to `cv::Mat::deallocate()' 
collect2: error: ld returned 1 exit status 
CMakeFiles/DisplayImage.dir/build.make:94: recipe for target 'DisplayImage' failed 
make[2]: *** [DisplayImage] Error 1 
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/DisplayImage.dir/all' failed 
make[1]: *** [CMakeFiles/DisplayImage.dir/all] Error 2 
Makefile:83: recipe for target 'all' failed 
make: *** [all] Error 2 
[email protected]:~/Programming $ 

次は何? Linuxでリンクエラーのトラブルシューティングを行うプロセスは何ですか?/ OpenCV あなたが提供できる洞察があれば幸いです!

答えて

0

いくつか...あなたはCMakeLists.txt

  • OpenCVV_LIBSを入力ミスしている

    • 私はあなたにも、私はのアウトソースビルド考えるinclude_directories(${OpenCV_INCLUDE_DIR})

    • が必要だと思いますこれは、バージョン管理下ではなく、ディレクトリ内にサブディレクトリを作成することを意味します(build)。 CMakeLists.txtcd build、その後cmake ..

  • +0

    恐ろしいを含むectoryは、[OK]を、私はCMakeLists.txtファイルにOpenCV_LIBSを修正し、あなたが示唆したようにビルドディレクトリを作っ – FrankieForceps

    +0

    、あなたのマークに感謝します。 include_directoryについては、文字通り "OpenCV_INCLUDE_DIR"を入力するのですか、それともOpenCVディレクトリへのパスを示すものですか?私はパス変数がLinux/OpenCVでどのように動作するのかよく分かりません。すべてのあなたの助けをありがとう! – FrankieForceps

    関連する問題