私は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 あなたが提供できる洞察があれば幸いです!
恐ろしいを含むectoryは、[OK]を、私はCMakeLists.txtファイルにOpenCV_LIBSを修正し、あなたが示唆したようにビルドディレクトリを作っ – FrankieForceps
、あなたのマークに感謝します。 include_directoryについては、文字通り "OpenCV_INCLUDE_DIR"を入力するのですか、それともOpenCVディレクトリへのパスを示すものですか?私はパス変数がLinux/OpenCVでどのように動作するのかよく分かりません。すべてのあなたの助けをありがとう! – FrankieForceps