对`cv :: VideoCapture :: VideoCapture(int)的未定义引用

时间:2017-09-04 23:48:13

标签: c++ opencv

我正在尝试使用C ++和OpenCV使用我的网络摄像头,但我得到了这个错误

  

(...):Images.cpp :(。text + 0x27):未定义的引用cv :: VideoCapture :: VideoCapture(int)

     

(...):Images.cpp :(。text + 0x38):未定义引用cv :: VideoCapture :: ~VideoCapture()

     

(...):Images.cpp :(。text $ _ZN2cv6StringD1Ev [_ZN2cv6StringD1Ev] + 0x11):对cv :: String :: deallocate()的未定义引用...

我的代码:

#include <iostream>
#include <string.h>
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/videoio/videoio.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/video.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace std;
using namespace cv;


int main(int argc, char const *argv[])
{
    VideoCapture cap(0);
    return 0;
}

4 个答案:

答案 0 :(得分:4)

关于opencv版本3.4.3,我遇到了同样的问题。

参考to this example,我发现我不包括libopencv_videoio。将其添加到项目中后,构建成功。

在opencv版本3中,我认为我们还需要包括库-lopencv_videoio才能使用VideoCapture。

答案 1 :(得分:1)

您的代码未编译的原因是您没有提供库和头文件的路径。尝试使用以下命令编译代码。

g++ main.cpp -o main -I <path to opencv header files> -L <path to opencv libraries> -l<name of libraries>

如果您使用的是Linux的示例

g++ main.cpp -o main -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui

我假设您的头文件位于/usr/local/include,库位于/usr/local/liblopencv_core是您图书馆的名称

答案 2 :(得分:0)

分叉Github项目后,我遇到了同样的问题。我用这些帖子解决了。
我的问题出在我创建的Makefile中,我不得不替换这些行。 oldLine:

$(EXECUTABLE): $(OBJECTS)
        $(CC) $(LDFLAGS) $(OBJECTS) -o $@

newLine:

$(EXECUTABLE): $(OBJECTS)
        $(CC) $(OBJECTS) $(LDFLAGS) -o $@

我希望它可以帮助某人;)

答案 3 :(得分:0)

您可能缺少opencv库,请尝试将它们添加到项目配置文件中,例如

LIBS += -LC:\\opencv\\opeencv4.1\\x86\\mingw\\bin \
    libopencv_core410 \
    libopencv_highgui410 \
    libopencv_imgcodecs410 \
    libopencv_imgproc410 \
    libopencv_features2d410 \
    libopencv_video410 \
    libopencv_videoio410 \