我正在尝试使用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;
}
答案 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/lib
,lopencv_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 \