標準ライブラリ関数を学ぶことも重要なのですが、一度トラッキングが行ってみたいと思い投稿しました。
わがままを言っているのは百も承知です。どうかトラッキングの解決に力を貸してください。
環境
- Windows10 64bit
- Opencv3.4.0
- VS2017
- 参考にしたサイトリンク内容
プログラムはこちらです。カメラに映った顔を検出して追尾するプログラムです。
#include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/videoio.hpp> #include <opencv2/highgui.hpp> #include <opencv2/tracking/tracker.hpp> #include <opencv2/tracking/tldDataset.hpp> #include <opencv2/imgproc.hpp> #include <iostream> int tracker_init(cv::Ptr<cv::TrackerMedianFlow> &tracker, cv::Rect2d &rect) { cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cout << "CAN'T OPEN CAMERA." << std::endl; return -1; } cv::Mat frame; cv::namedWindow("Select face"); while (true) { cap >> frame; if (frame.empty()) { std::cout << "FAILD TO READ A FRAME" << std::endl; cv::destroyAllWindows(); break; } cv::imshow("Select face", frame); switch (cv::waitKey(1)) { case 'q': return -1; case 't': rect = cv::selectROI("tracker", frame); tracker->init(frame, rect); cv::destroyAllWindows(); return 1; default: break; } } return -1; } int main(int argc, char **argv) { cv::Ptr<cv::TrackerMedianFlow> tracker = cv::TrackerMedianFlow::create(); cv::Rect2d roi; if (tracker_init(tracker, roi) == -1) { /* * 初期化に失敗 */ return -1; } cv::Scalar color = cv::Scalar(0, 255, 0); cv::Mat frame; cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cout << "CAN'T OPEN CAMERA." << std::endl; return -1; } while (cv::waitKey(1) != 'q') { cap >> frame; if (frame.empty()) { break; } //更新 tracker->update(frame, roi); //結果表示 cv::rectangle(frame, roi, color, 1, 1); cv::imshow("tracker", frame); } return 0; }
ヘッダファイルを指定したあと依存ファイルとしてopencv_world.340を指定してのですがエラーが出ます。(すいません。文字数の問題でこちらに置かせていただきます。)
https://pastebin.com/XZfRsbZN
編集4/19
Cmakeでビルドしようとしているのですが以下のエラーが出ます。
頑張って和訳してみたのですが、少ししかわかりませんでした。
CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modules directory not found in C:/Users/Daito/Desktop/cmake-3.11.1-win64-x64/share/cmake-3.11 CMake Error: Could not find cmake module file: CMakeSystemSpecificInitialize.cmake CMake Error: Could not find cmake module file: CMakeDetermineCCompiler.cmake CMake Error: Could not find cmake module file: C:/opencv_contrib-3.4.1/modules/tracking/build/CMakeFiles/3.11.1/CMakeCCompiler.cmake CMake Error: Could not find cmake module file: CMakeDetermineCXXCompiler.cmake CMake Error: Could not find cmake module file: C:/opencv_contrib-3.4.1/modules/tracking/build/CMakeFiles/3.11.1/CMakeCXXCompiler.cmake CMake Error: Could not find cmake module file: CMakeSystemSpecificInformation.cmake CMake Error in CMakeLists.txt: No CMAKE_C_COMPILER could be found. CMake Error: Could not find cmake module file: CMakeCInformation.cmake CMake Error in CMakeLists.txt: No CMAKE_CXX_COMPILER could be found. CMake Error: Could not find cmake module file: CMakeCXXInformation.cmake CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_required(VERSION 3.11) should be added at the top of the file. The version specified may be lower if you wish to support older CMake versions for this project. For more information run "cmake --help-policy CMP0000". This warning is for project developers. Use -Wno-dev to suppress it. Configuring incomplete, errors occurred!
編集2
なぜ、ただのソースコードではいけないのでしょうか?
vsが出力してくれた実行ファイルが得られればよいのでは?
cmakeがビルドするものや、ライブラリがないといけない事はわかったのですが、ただのソースコードをコンパイルして、ライブラリをくっつけて実行ファイルを作るのではいけないのでしょうか?
決してCmakeが嫌いなわけではございません。ただちゃんと理解していないで使うことに抵抗があります。公式やサイトを見てみましたが以上の疑問が解決できずにいます。

回答4件
あなたの回答
tips
プレビュー