C++でOpenCVを使おうとしていますが、コンパイルがうまくできません。環境はUbuntu16.04 LTSです。まず、このURLにあるように環境を整えました。そこで、このページにあるようなサンプルプログラム
C
1#include <opencv2/core.hpp> 2#include <opencv2/imgcodecs.hpp> 3#include <opencv2/highgui.hpp> 4#include <iostream> 5 6int main(int argc, const char* argv[]) 7{ 8 // 画像データをファイルから読み込む 9 cv::Mat src = cv::imread("lena.jpg", cv::IMREAD_COLOR); 10 11 // 画像の読み込みに失敗したらエラー終了する 12 if(src.empty()) 13 { 14 std::cerr << "Failed to open image file." << std::endl; 15 return -1; 16 } 17 18 cv::namedWindow("image", cv::WINDOW_AUTOSIZE); 19 cv::imshow("image", src); 20 cv::waitKey(0); 21 cv::destroyAllWindows(); 22 23 return 0; 24}
を書いて、同じディレクトリにlena.jpgを用意した状態で、
g++ test.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
でコンパイルして、
./a.out
とすると、無事にlena画像が表示されます。これで、OpenCVがC++で使えるようになったのだと理解しました。次にこのページにあるvideostab.cppをダウンロードして、全く同じように
g++ videostab.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
とコンパイルを試みました。すると、
/usr/bin/ld: /tmp/ccJavymY.o: シンボル '_ZN2cv10warpAffineERKNS_11_InputArrayERKNS_12_OutputArrayES2_NS_5Size_IiEEiiRKNS_7Scalar_IdEE' への未定義参照です
/usr/local/lib/libopencv_imgproc.so.3.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
というエラーが生じます。一体何が問題なのでしょうか。
C言語の経験はありますが、C++とOpenCVはほとんど触ったことのない初心者です。よ
よろしくおねがいします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 06:23
2018/07/09 06:33 編集
2018/07/09 06:37
2018/07/09 06:46
2018/07/09 07:19