5
g++ cv.cpp -o cv -I /usr/local/include/opencv
    -L /usr/local/lib  -lm -lcv -lhighgui -lcvaux

错误:

/usr/bin/ld: cannot find -lcv
collect2: ld returned 1 exit status

代码:

#include <cv.h>
#include <ml.h>
#include <cxcore.h>
//#include <cxtypes.h>
#include <highgui.h>

int main(int argc, char* argv[])
{
    IplImage* img = cvLoadImage( "bal.png" );
    cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
    cvShowImage("Example1", img);
    cvWaitKey(0);
    cvReleaseImage( &img );
    cvDestroyWindow( "Example1" );
    return 0;
}

它是 32 位的,

locate libcv
/usr/lib/libcv.so.2.1
/usr/lib/libcv.so.2.1.0

`pkg-config --cflags --libs opencv`

-I/usr/local/include/opencv
-I/usr/local/include  /usr/local/lib/libopencv_calib3d.so
/usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so
/usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so
/usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so
/usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so
/usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so
/usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

在/usr/local中安装了OpenCV-2.4.0,我也有一个系统python-opencv。我在哪里做错了?我应该怎么办?

4

3 回答 3

6

从OpenCV 网站上发布的变更日志(针对 2.2 版)可以看出,库名称从 2.2 版开始发生了变化,因此用于链接 2.1 版的库名不能用于编译 2.4 版(即libcv.so通过-lcv不是版本 > 2.1 的有效库名称,依此类推)。您需要传递属于新版本 OpenCV 的库(已通过pkg-config命令列出)。您可以使用pkg-config在这些行上传递编译器和链接器标志:g++ cv.cpp -o cv $(pkg-config --cflags --libs opencv).
希望这可以帮助!

于 2012-05-04T20:05:36.893 回答
1

/usr/lib当新安装的 2.4版本在时,您拥有 2.1版本/usr/local/lib,需要修复该问题并确保ld找到的库是您编译/链接的库。

于 2012-05-04T17:14:17.200 回答
0

我在 opencv 2.4 上遇到了类似的问题,并且是兼容性问题。如果要使用最新版本,请删除之前版本的 opencv 以避免在编译时出现此问题或 lib 位置问题。

于 2015-01-23T10:37:21.590 回答