#c #opencv #ubuntu
#c #opencv #ubuntu
Вопрос:
Я пытаюсь запустить программу opencv с CodeBlocks в Ubuntu. Я успешно собрал opencv с помощью opencv_contrib, но по какой-то причине мои модули dnn работают некорректно при попытке собрать саму программу.
Руководство, которое я использовал для установки opencv: https://importgeek.wordpress.com/2016/08/27/install-and-configure-opencv-in-code-blocks / Примечание: я настроил свой cmake на правильную работу с dnn. Спецификации конфигурации, включенные в изображение: https://imgur.com/a/vH09Vj7 Что я пробовал: удаление и переустановка opencv. Я запустил pkg-config —cflags —libs opencv, чтобы проверить, упоминается ли dnn. opencv_dnn был включен, но, как ни странно, opencv_saliency также был включен, хотя я снял его в cmake.
Ниже приведен журнал сборки при попытке запуска программы.
-------------- Build: Debug in FBT (compiler: GNU GCC Compiler)---------------
g -Wall -g -std=c 11 -I/usr/local/include/opencv -I/usr/local/include -c /home/nurc/Desktop/FBT-Code-master/main.cpp -o obj/Debug/FBT-Code-master/main.o
In file included from /home/nurc/Desktop/FBT-Code-master/main.cpp:5:0:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp: In member function ‘void detectionModel::runModel(cv::Matamp;, std::vector<player>amp;, std::vector<foundBox>amp;)’:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:13:67: error: cannot convert ‘cv::Mat’ to ‘double’ for argument ‘2’ to ‘cv::Mat cv::dnn::experimental_dnn_v2::blobFromImage(const cv::Matamp;, double, const Sizeamp;, const Scalaramp;, bool, bool)’
blobFromImage(frame, blob, 1.0, inpSize, Scalar(), true, false);
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:16:31: error: no matching function for call to ‘cv::dnn::experimental_dnn_v2::Net::forward(std::vector<cv::Mat>amp;, const std::vector<std::__cxx11::basic_string<char> >amp;)’
net.forward(outs, outNames);
^
In file included from /usr/local/include/opencv2/dnn.hpp:62:0,
from /home/nurc/Desktop/FBT-Code-master/detect_track.hpp:4,
from /home/nurc/Desktop/FBT-Code-master/main.cpp:5:
/usr/local/include/opencv2/dnn/dnn.hpp:396:21: note: candidate: cv::Mat cv::dnn::experimental_dnn_v2::Net::forward(const cv::Stringamp;)
CV_WRAP Mat forward(const Stringamp; outputName = String());
^
/usr/local/include/opencv2/dnn/dnn.hpp:396:21: note: candidate expects 1 argument, 2 provided
/usr/local/include/opencv2/dnn/dnn.hpp:403:22: note: candidate: void cv::dnn::experimental_dnn_v2::Net::forward(std::vector<cv::Mat>amp;, const cv::Stringamp;)
CV_WRAP void forward(std::vector<Mat>amp; outputBlobs, const Stringamp; outputName = String());
^
/usr/local/include/opencv2/dnn/dnn.hpp:403:22: note: no known conversion for argument 2 from ‘const std::vector<std::__cxx11::basic_string<char> >’ to ‘const cv::Stringamp;’
/usr/local/include/opencv2/dnn/dnn.hpp:409:22: note: candidate: void cv::dnn::experimental_dnn_v2::Net::forward(std::vector<cv::Mat>amp;, const std::vector<cv::String>amp;)
CV_WRAP void forward(std::vector<Mat>amp; outputBlobs,
^
/usr/local/include/opencv2/dnn/dnn.hpp:409:22: note: no known conversion for argument 2 from ‘const std::vector<std::__cxx11::basic_string<char> >’ to ‘const std::vector<cv::String>amp;’
/usr/local/include/opencv2/dnn/dnn.hpp:416:22: note: candidate: void cv::dnn::experimental_dnn_v2::Net::forward(std::vector<std::vector<cv::Mat> >amp;, const std::vector<cv::String>amp;)
CV_WRAP void forward(std::vector<std::vector<Mat> >amp; outputBlobs,
^
/usr/local/include/opencv2/dnn/dnn.hpp:416:22: note: no known conversion for argument 1 from ‘std::vector<cv::Mat>’ to ‘std::vector<std::vector<cv::Mat> >amp;’
In file included from /home/nurc/Desktop/FBT-Code-master/main.cpp:5:0:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:50:70: error: ‘NMSBoxes’ was not declared in this scope
NMSBoxes(boxes, confidences, confThreshold, nmsThreshold, indices);
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp: In member function ‘bool tracker::add(cv::Matamp;, std::vector<foundBox>amp;)’:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:130:70: error: ‘NMSBoxes’ was not declared in this scope
NMSBoxes(boxes, confidences, confThreshold, nmsThreshold, indices);
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:140:22: error: ‘TrackerCSRT’ has not been declared
fb.tracker = TrackerCSRT::create();
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp: In member function ‘bool tracker::add(cv::Matamp;, std::vector<player>amp;)’:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:171:70: error: ‘NMSBoxes’ was not declared in this scope
NMSBoxes(boxes, confidences, confThreshold, nmsThreshold, indices);
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:181:21: error: ‘TrackerCSRT’ has not been declared
p.tracker = TrackerCSRT::create();
^
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp: In member function ‘bool tracker::add(cv::Matamp;, std::vector<player>amp;, std::vector<foundBox>amp;)’:
/home/nurc/Desktop/FBT-Code-master/detect_track.hpp:212:70: error: ‘NMSBoxes’ was not declared in this scope
NMSBoxes(boxes, confidences, confThreshold, nmsThreshold, indices);
^
Process terminated with status 1 (0 minute(s), 1 second(s))
8 error(s), 0 warning(s) (0 minute(s), 1 second(s))
Комментарии:
1. Вы создали его с помощью opencv_contrib?
2. Можете ли вы поделиться списком cmake, который вы использовали при создании opencv? Можете ли вы поделиться фрагментом кода, который выдает эту ошибку? Можете ли вы поделиться командой, как вы пытались скомпилировать свою программу?
3. @yuRa Я собрал его с помощью opencv_contrib
4. @YunusTemurlenk Я могу поделиться списком cmakelist, но не могу поделиться фрагментом кода. Чтобы скомпилировать программу, я просто нажал build в codeblocks.
5. @YunusTemurlenk CMakeLists.txt : drive.google.com/file/d/1Z1hhwBWiMPE2wrRZyQDBaYYvvocsFmRq /…