Как использовать класс OpenCV VideoCapture на Raspberry Pi?

Я пытаюсь получить доступ к классу VideoCapture, чтобы выполнить некоторую обработку изображения для каждого кадра, и продолжаю получать серию ошибок, описанных по порядку:

:-1: error: main.o: undefined reference to symbol '_ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi'

/usr/local/lib/libopencv_imgproc.so.2.4:-1: error: error adding symbols: DSO missing from command line

:-1: error: collect2: error: ld returned 1 exit status

Я использую QtCreator и Rasberry Pi 3. Я могу загрузить изображение с диска, так почему же этот фрагмент кода, который я буквально вытащил из документов OpenCV, не компилируется?

Я обеспечил загрузку соответствующего видео для драйверов Linux, введя команду терминала:

sudo modprobe bcm2835-v4l2

вот ссылка на документацию http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    Mat edges;
    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        cvtColor(frame, edges, CV_BGR2GRAY);
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
        Canny(edges, edges, 0, 30, 3);
        imshow("edges", edges);
        if(waitKey(30) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

person randy sandy    schedule 17.11.2016    source источник
comment
Какую версию Linux вы используете?   -  person Rowland Shaw    schedule 17.11.2016
comment
Распбиан Джесси   -  person randy sandy    schedule 17.11.2016


Ответы (1)


Я сам решил этот вопрос, для тех, кто сталкивается с подобной проблемой, ошибка DSO (Dynamic Shared Object) указывает на то, что определенная библиотека (libopencv_imgproc.so.2.4) была отсутствует.

Решение состоит в том, чтобы изменить ваш файл .pro, я внес следующие изменения:

INCLUDEPATH += /usr/local/include/opencv --> /usr/local/include/opencv2

LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui --> -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui

ПРИМЕЧАНИЕ. Если вы добавите библиотеку imgproc без включения opencv2, вы сохраните те же ошибки.

person randy sandy    schedule 17.11.2016