Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Raspberry Pi上使用OpenCV VideoCapture类?_C++_Linux_Opencv_Arm_Raspberry Pi3 - Fatal编程技术网

C++ 如何在Raspberry Pi上使用OpenCV VideoCapture类?

C++ 如何在Raspberry Pi上使用OpenCV VideoCapture类?,c++,linux,opencv,arm,raspberry-pi3,C++,Linux,Opencv,Arm,Raspberry Pi3,我一直在尝试访问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

我一直在尝试访问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
我正在使用QtCreatorRasberry Pi 3。我能够从磁盘加载图像,那么为什么我从OpenCV文档中提取的这段代码没有编译呢

我已通过输入terminal命令确保加载适用于linux驱动程序的适当视频:

sudo modprobe bcm2835-v4l2
这里是文档的链接


我自己解决了这个问题,对于任何遇到类似问题的人,错误DSO(动态共享对象)表明某个库(libopencv_imgproc.so.2.4)丢失

解决方案是修改你的.pro文件,我做了以下修改:

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

LIBS+=-L/usr/local/lib-lopencv\U core-lopencv\U highgui-->-L/usr/local/lib-lopencv\U core-lopencv\U imgproc-lopencv\U highgui


注意:如果您添加imgproc库而不包括opencv2,您将保留相同的错误

你用的是什么味道的Linux?Raspbian Jessie
#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;
}