前提・実現したいこと
debian 10 の環境でOpencv3.4.0のvizモジュールもしくはVTKを使用したいです
発生している問題・エラーメッセージ
vizモジュールを使いたいと思いコンパイルしてみたのですがインクルードしたいヘッダファイルが見つからずどうすればよいかわかりません。ご一緒に考えていただけるとありがたいです。
error
1$ make 2g++ viz_test.cpp -std=c++11 `pkg-config opencv --cflags --libs` -I/home2/st/work/opencv-3.4.0/modules/viz/include/opencv2/ -o viz_test 3viz_test.cpp:1:10: fatal error: opencv2/viz.hpp: そのようなファイルやディレクトリはありません 4 1 | #include <opencv2/viz.hpp> 5 | ^~~~~~~~~~~~~~~~~ 6compilation terminated. 7make: *** [Makefile:15: viz_test] エラー 1
###ソースコード
c++
1 2//#include <opencv2/viz.hpp> 3//#include <iostream> 4 5using namespace cv; 6using namespace std; 7static void help() 8{ 9 cout 10 << "--------------------------------------------------------------------------" << endl 11 << "This program shows how to launch a 3D visualization window. You can stop event loop to continue executing. " 12 << "You can access the same window via its name. You can run event loop for a given period of time. " << endl 13 << "Usage:" << endl 14 << "./launching_viz" << endl 15 << endl; 16} 17int main() 18{ 19 help(); 20 viz::Viz3d myWindow("Viz Demo"); 21 myWindow.spin(); 22 cout << "First event loop is over" << endl; 23 viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo"); 24 sameWindow.spin(); 25 cout << "Second event loop is over" << endl; 26 sameWindow.spinOnce(1, true); 27 while(!sameWindow.wasStopped()) 28 { 29 sameWindow.spinOnce(1, true); 30 } 31 cout << "Last event loop is over" << endl; 32 return 0; 33}
試したこと
まずVTKのソースを適当なディレクトリにCMakeでビルドしてインストールを行いました。
CMakeの引数は指定しませんでした。
その後念の為Opencvごと入れ直そうと思いmake uninstall後当該ディレクトリを削除
そしてOpencv3.4.0を再びCmakeにてビルドしました。
Cmakeの際の引数にはいろいろ設定しましたが関係のある箇所としては
-D BUILD_opencv_viz=ON
-D WITH_VTK=ON
あたりだと思います。
Cmake後の結果としてGeneral configuration for OpenCV 3.4.0が出てきたので見てみましたが
VTK support: NO
となっておりました。
vizに関しては特に記述されておりませんでした。
ダメ元でOpenCV VTKのソースコードをそのまま使ってmake(引数は上記参照)を用いてコンパイルしてみましたが上記のエラー文が出てコンパイルできませんでした。
ちなみにOpenCVの機能を使った(Matなどで計算)簡単なソースコードは現在の環境で動作しています。
あなたの回答
tips
プレビュー