在Ubuntu 12.04中编译和链接OpenCV

时间:2012-12-16 18:13:00

标签: gcc ubuntu opencv

我花了很长时间才让openCV在Ubuntu 12.04中正确链接,并且认为我会为了别人的利益分享我学到的东西。

OpenCV现在可以作为

在Ubuntu存储库中使用
sudo apt-get install libopencv-dev

这很棒,但我相信(如果我错了请纠正我)这个版本的opencv有不同的库命名约定。主要区别在于c ++中的include行应该是

#include "opencv2/opencv.hpp"

这将使您的代码编译为对象而不是链接。另一个区别是静态库也已从 libcv * 重命名为 libopencv * 。例如,二进制文件现在可以位于

/usr/lib/libopencv_core.so
/usr/lib/libopencv_highgui.so
.
.
.

要解决此问题,我需要通过将编译器命令更改为

来明确告诉链接器新的库名称
g++ main.cpp -lopencv_core -lopencv_highgui ...

或者在CMake中

target_link_libraries(main opencv_core opencv_highgui ...)

我希望这会有所帮助。如果有人比我更了解,我很想知道这里发生了什么。

-Mike

1 个答案:

答案 0 :(得分:6)

就个人而言,我正在使用' pkg-config'获取编译标志。

g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main

主要的例子:

#include <stdio.h>
#include <cv.h>

int main(void)
{
    printf("%s\r\n", CV_VERSION);
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION);
}