咖啡因:opencv错误

7
我已经从源代码构建了opencv 3.0,并可以运行一些示例应用程序,针对头文件进行了构建,因此我认为它已经成功安装。
我还使用python3,现在要安装和构建caffe。由于拥有AMD GPU和Anaconda,我在Makefile.config中设置了几个变量,因此我正在使用CPU。
当我运行make all时,我得到以下错误:
$ make all
CXX/LD -o .build_release/examples/cpp_classification/classification.bin
/usr/bin/ld: .build_release/examples/cpp_classification/classification.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'
//usr/local/lib/libopencv_imgcodecs.so.3.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:565: recipe for target '.build_release/examples/cpp_classification/classification.bin' failed
make: *** [.build_release/examples/cpp_classification/classification.bin] Error 1

从搜索结果来看,我认为这与使用openCV 3有关,但我不确定从哪里开始寻找解决方案。需要帮助吗?

是的,我是众多缺乏经验的用户之一,想要尝试谷歌Inception学习技术。

6个回答

15

您也可以在第187行的MakeFile中添加opencv_imgcodecs,请参考该pull


2
在我的g++编译中添加“-lopencv_imgcodecs”非常有效。 - Alter

8

可能是你正在使用OpenCV 3版本。如果是,请在你的Makefile.config中取消注释以下行:

# OPENCV_VERSION := 3

所以它看起来会像这样。
OPENCV_VERSION := 3

您可以通过以下方式验证当前使用的版本:

$ python
>>> import cv2
>>> cv2.__version__
'3.1.0-dev'

2
问题报告非常清晰。链接库存在问题。原因可能是3.0和2.x之间的差异。 你需要添加:
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

添加到LIBRARIES +=中。


1

我使用了cmake代替,并加上了-DBUILD_TIFF=ON标志,成功构建了。


0
一个快速的解决方法是在编译代码时添加-lopencv_imgcodecs标志。
这对我有用:
g++ test.cpp -o test <一些标志> -lopencv_imgcodecs

0

您可以像下面这样编辑Makefile.config文件的两行,这对我来说是有效的。请注意,在默认路径之前必须设置您的opencv路径

INCLUDE_DIRS := $(PYTHON_INCLUDE) /home/young/Soft/openCV-3.3.1/include \
    /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /home/young/Soft/openCV-3.3.1/lib \
    /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial                                                                                            

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接