怎么在c ++中编译opencv?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (75)

我有一个只有导入的文件:

#include <iostream>
#include <stdio.h>

#include "cxcore.hpp"
#include "highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{

}

我尝试用g ++ -I / usr / include / opencv -lopencv -lm m.cpp进行编译

这是我的copencv lib内容:

alberto@zefiro:~$ ls /usr/include/opencv/
cvaux.h    cvcompat.h  cv.hpp        cvtypes.h  cvvidsurv.hpp  cxcore.h    cxerror.h  cxmat.hpp  cxoperations.hpp  highgui.h    ml.h
cvaux.hpp  cv.h        cvinternal.h  cvver.h    cvwimage.h     cxcore.hpp  cxflann.h  cxmisc.h   cxtypes.h         highgui.hpp

我在Ubuntu 10.10上

提问于
用户回答回答于

需要正确包含标题-I(大写i)和库-l(小写L)。

在最新的OpenCV版本中,应该这样做:

#include <cv.h>
#include <highgui.h>

然后尝试编译:

g++ m.cpp -o app `pkg-config --cflags --libs opencv`
用户回答回答于
#include <cv.h>
#include <highgui.h>

int main()
{
    return 0;
}

可以从顶部依次添加以下列表中的库参数,直到找到所需的最小参数集:

  -lopencv_core
  -lopencv_imgproc
  -lopencv_highgui
  -lopencv_ml
  -lopencv_video
  -lopencv_features2d
  -lopencv_calib3d
  -lopencv_objdetect
  -lopencv_contrib
  -lopencv_legacy
  -lopencv_flann

例如

gcc hello.c -o hello \
    -I /usr/include/opencv \
    -L /usr/lib \
    -lopencv_core \
    -lopencv_imgproc

假设C ++代码

#include "core/core.hpp"
#include "highgui/highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    return 0;
}

那么会编译

g++ hello.cpp -o hello \
    -I /usr/include/opencv2 \
    -L /usr/lib \
    -lopencv_core \
    -lopencv_imgproc

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励