我花了很长时间才让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
答案 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);
}