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

Fel*_*ado 2 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;
}
Run Code Online (Sandbox Code Playgroud)

小智 7

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

参照这个例子,我发现我没有包含libopencv_videoio。将其添加到项目后,构建成功。

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


Lak*_*wal 5

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

g++ main.cpp -o main -I <path to opencv header files> -L <path to opencv libraries> -l<name of libraries>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Linux,则示例示例是

g++ main.cpp -o main -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui
Run Code Online (Sandbox Code Playgroud)

这里我假设你的头文件/usr/local/include和库都在/usr/local/lib,并且lopencv_core是你的库的名称