Ubuntu 16.04 でOpenCVのコードを久しぶりにC++で書きました。これです
cpp
1#include "opencv2/opencv.hpp" 2 3int main(int argh, char* argv[]) 4{ 5 cv::VideoCapture cap(0);//デバイスのオープン 6 //cap.open(0);//こっちでも良い. 7 8 if(!cap.isOpened())//カメラデバイスが正常にオープンしたか確認. 9 { 10 //読み込みに失敗したときの処理 11 return -1; 12 } 13 14 cv::Mat frame; //取得したフレーム 15 while(cap.read(frame))//無限ループ 16 { 17 // 18 //取得したフレーム画像に対して,クレースケール変換や2値化などの処理を書き込む. 19 // 20 21 cv::imshow("win", frame);//画像を表示. 22 const int key = cv::waitKey(1); 23 if(key == 'q'/*113*/)//qボタンが押されたとき 24 { 25 break;//whileループから抜ける. 26 } 27 else if(key == 's'/*115*/)//sが押されたとき 28 { 29 //フレーム画像を保存する. 30 cv::imwrite("img.png", frame); 31 } 32 } 33 cv::destroyAllWindows(); 34 return 0; 35}
でコンパイルしました。
コマンドは直接書きました。
g++ -std=gnu++11 -o test test2.cpp `pkg-config opencv --cflags --libs`
問題はこれがエラーをだしてしまうということです
/tmp/cczWv3x8.o: 関数 `main' 内: test2.cpp:(.text+0xc2): `cv::imshow(std::string const&, cv::_InputArray const&)' に対する定義されていない参照です test2.cpp:(.text+0x17a): `cv::imwrite(std::string const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)' に対する定義されていない参照です collect2: error: ld returned 1 exit status
という感じです。
どうしてなのかわかる人はいませんか?
私があとしっているのは
clang++ -std=gnu++11 -o test test2.cpp `pkg-config opencv --cflags --libs`
だと問題なく実行ファイルができるということです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/01 12:18