Я пытаюсь настроить OpenCV в Ubuntu 16.04 с C ++.Мне удалось заставить программу работать с модулями OpenCV по умолчанию, но у меня возникли трудности с расширенными модулями.Например, я хочу использовать следующий код для генерации суперпикселей:
#include <opencv2/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ximgproc/slic.hpp>
#include <opencv2/core/cvstd.hpp>
#include <opencv2/ximgproc.hpp>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <vector>
#include <float.h>
using namespace std;
using namespace cv;
int main( int argc, char* argv[] ) {
Mat *image;
*image = imread("shoe.jpg" , cv::IMREAD_COLOR);
Ptr<ximgproc::SuperpixelSLIC> ptr =
ximgproc::createSuperpixelSLIC(*image,100,10, 10.0f);
}
Когда я компилирую с этой строкой:
g++ -std=c++11 main.cpp -o output `pkg-config --cflags --libs opencv`
Я получаю следующую ошибку:
/tmp/ccnStIaV.o: In function `main':
main.cpp:(.text+0x187): undefined reference to `cv::ximgproc::createSuperpixelSLIC(cv::_InputArray const&, int, int, float)'
collect2: error: ld returned 1 exit status
Я считаю, что это проблема с файлом opencv.pc в моем файле pkgconfigs.По какой-то причине, когда я собираю расширенные модули, файл opencv.pc не изменяется, чтобы включить ximgproc и другие модули.Когда я запускаю команду pkg-config --libs opencv
, я получаю те же библиотеки, что и при установке только базовой версии OpenCV:
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab
Полагаю, я могу зайти в файл opencv.pc и вручную добавить всерасширенные пути к модулям, но тот факт, что это не было сделано автоматически, подсказывает мне, что я делаю что-то не так во время установки.
Буду очень признателен за любые советы по этой проблеме.Я застрял на этой установке в течение последних нескольких дней и хотел бы приступить к обработке изображений:)