Ubuntu16.04.5 LTSを使用しています。以下のサイトを参考にしながらOpenCV3.4.1を導入したのですが、エラーが発生してしまいます。
GPUはNVIDIA GeForce GTX 1060を使用しています。
CUDAインストール : https://qiita.com/JeJeNeNo/items/a56be3be69dc88e6dfa4
OpenCV3.4.0 : https://qiita.com/JeJeNeNo/items/a56be3be69dc88e6dfa4
発生している問題・エラーメッセージ
opencv-3.4.1/samples/gpu/hog.cppをコンパイルした時のエラーメッセージです。
# gcc -o webcam webcam.cpp # 同じようなエラーメッセージのため、一部抜粋します # /tmp/cc5D2AM4.o: 関数 `main' 内: webcam.cpp:(.text+0x38): `cv::VideoCapture::VideoCapture(int)' に対する定義されていない参照です webcam.cpp:(.text+0x47): `cv::VideoCapture::isOpened() const' に対する定義されていない参照です webcam.cpp:(.text+0x69): `cv::VideoCapture::operator>>(cv::Mat&)' に対する定義されていない参照です webcam.cpp:(.text+0xbf): `cv::imshow(cv::String const&, cv::_InputArray const&)' に対する定義されていない参照です webcam.cpp:(.text+0xe7): `cv::waitKey(int)' に対する定義されていない参照です webcam.cpp:(.text+0x166): `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)' に対する定義されていない参照です webcam.cpp:(.text+0x1b4): `cv::destroyAllWindows()' に対する定義されていない参照です webcam.cpp:(.text+0x1c8): `cv::VideoCapture::~VideoCapture()' に対する定義されていない参照です webcam.cpp:(.text+0x264): `cv::VideoCapture::~VideoCapture()' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `__static_initialization_and_destruction_0(int, int)' 内: webcam.cpp:(.text+0x2ad): `std::ios_base::Init::Init()' に対する定義されていない参照です webcam.cpp:(.text+0x2bc): `std::ios_base::Init::~Init()' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cv::String::String(char const*)' 内: webcam.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x54): `cv::String::allocate(unsigned long)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cv::String::~String()' 内: webcam.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): `cv::String::deallocate()' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cv::String::operator=(cv::String const&)' 内: webcam.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28): `cv::String::deallocate()' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cv::Mat::~Mat()' 内: webcam.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): `cv::fastFree(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cv::Mat::release()' 内: webcam.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4b): `cv::Mat::deallocate()' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::operator<<(std::ostream&, cvflann::anyimpl::empty_any const&)' 内: webcam.cpp:(.text._ZN7cvflann7anyimpllsERSoRKNS0_9empty_anyE[_ZN7cvflann7anyimpllsERSoRKNS0_9empty_anyE]+0x1d): `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::base_any_policy::~base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl15base_any_policyD2Ev[_ZN7cvflann7anyimpl15base_any_policyD5Ev]+0x29): `operator delete(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::base_any_policy::~base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl15base_any_policyD0Ev[_ZN7cvflann7anyimpl15base_any_policyD5Ev]+0x20): `operator delete(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::big_any_policy<cvflann::flann_centers_init_t>::print(std::ostream&, void* const*)' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl14big_any_policyINS_20flann_centers_init_tEE5printERSoPKPv[_ZN7cvflann7anyimpl14big_any_policyINS_20flann_centers_init_tEE5printERSoPKPv]+0x29): `std::ostream::operator<<(int)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::big_any_policy<cvflann::flann_algorithm_t>::print(std::ostream&, void* const*)' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl14big_any_policyINS_17flann_algorithm_tEE5printERSoPKPv[_ZN7cvflann7anyimpl14big_any_policyINS_17flann_algorithm_tEE5printERSoPKPv]+0x29): `std::ostream::operator<<(int)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::big_any_policy<cv::String>::print(std::ostream&, void* const*)' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl14big_any_policyIN2cv6StringEE5printERSoPKPv[_ZN7cvflann7anyimpl14big_any_policyIN2cv6StringEE5printERSoPKPv]+0x31): `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::typed_base_any_policy<cvflann::anyimpl::empty_any>::~typed_base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl21typed_base_any_policyINS0_9empty_anyEED2Ev[_ZN7cvflann7anyimpl21typed_base_any_policyINS0_9empty_anyEED5Ev]+0x35): `operator delete(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::typed_base_any_policy<cvflann::anyimpl::empty_any>::~typed_base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl21typed_base_any_policyINS0_9empty_anyEED0Ev[_ZN7cvflann7anyimpl21typed_base_any_policyINS0_9empty_anyEED5Ev]+0x20): `operator delete(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::typed_base_any_policy<char const*>::~typed_base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl21typed_base_any_policyIPKcED2Ev[_ZN7cvflann7anyimpl21typed_base_any_policyIPKcED5Ev]+0x35): `operator delete(void*)' に対する定義されていない参照です /tmp/cc5D2AM4.o: 関数 `cvflann::anyimpl::typed_base_any_policy<char const*>::~typed_base_any_policy()' 内: webcam.cpp:(.text._ZN7cvflann7anyimpl21typed_base_any_policyIPKcED0Ev[_ZN7cvflann7anyimpl21typed_base_any_policyIPKcED5Ev]+0x20): `operator delete(void*)' に対する定義されていない参照です
該当のソースコード
ソースコードは以下のようになります。
C++
1/* opencv-3.4.1/samples/webcam.cpp */ 2 3#include "opencv2/opencv.hpp" 4 5int main(int argh, char* argv[]) 6{ 7 cv::VideoCapture cap(0);//デバイスのオープン 8 //cap.open(0);//こっちでも良い. 9 10 if(!cap.isOpened())//カメラデバイスが正常にオープンしたか確認. 11 { 12 //読み込みに失敗したときの処理 13 return -1; 14 } 15 16 while(1)//無限ループ 17 { 18 cv::Mat frame; 19 cap >> frame; // get a new frame from camera 20 21 // 22 //取得したフレーム画像に対して,クレースケール変換や2値化などの処理を書き込む. 23 // 24 25 cv::imshow("window", frame);//画像を表示. 26 27 int key = cv::waitKey(1); 28 if(key == 113)//qボタンが押されたとき 29 { 30 break;//whileループから抜ける. 31 } 32 else if(key == 115)//sが押されたとき 33 { 34 //フレーム画像を保存する. 35 cv::imwrite("img.png", frame); 36 } 37 } 38 cv::destroyAllWindows(); 39 return 0; 40} 41
GPUを使った処理をしたいと思っているのですが、思うようにいっていません。また、リンクエラーだということはわかるのですが、具体的になにをすれば良いのかわかりません。
初心者ですので、具体的な解決策や参考になるサイトを教えていただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー