8

我刚刚花了很长时间让 openCV 在 Ubuntu 12.04 中正确链接,并认为我会分享我学到的知识以造福他人。

OpenCV 现在可以在 Ubuntu 存储库中作为

sudo apt-get install libopencv-dev

这很好,但我相信(如果我错了,请纠正我)这个版本的 opencv 对库有不同的命名约定。主要区别在于,在 C++ 中,包含行应为

#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 ...)

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

-麦克风

4

1 回答 1

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);
}
于 2015-10-20T19:58:05.063 回答