我已经从源代码构建了opencv 3.0,并且可以运行一些示例应用程序,可以根据头进行构建,所以我认为它已经成功安装。
我也在使用python3,现在我要安装并构建caffe。我在Makefile.config中设置了一些变量,因为我使用的是CPU,因为我有AMD GPU和Anaconda。
当我运行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
从搜索来看,我认为这与使用openCV3有关,但我不确定从哪里开始寻找解决方案。有什么帮助吗?
是的,我是一群缺乏经验的用户中的一员,他们希望摆弄谷歌盗梦空间的学习技术。
您还可以在第187行将opencv_imgcodecs
添加到MakeFile中,请参阅此pull。
可能是您使用的是OpenCV版本3。如果是,只需取消注释Makefile.config
:中的以下行
# OPENCV_VERSION := 3
所以它看起来像
OPENCV_VERSION := 3
您可以通过以下操作验证当前使用的版本:
$ python
>>> import cv2
>>> cv2.__version__
'3.1.0-dev'
问题报告非常清楚。链接库时出现问题。原因可能是3.0和2.x之间的差异。您需要添加
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
进入图书馆+=。
我使用了带有-DBUILD_TIFF=ON
标志的cmake
,并获得了成功的构建。
您可以像这样用以下两行编辑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
一个快速的解决方法是在编译代码时添加-lopencv_imgcodecs
标志
这对我很有效:g++ test.cpp -o test <Some flags> -lopencv_imgcodecs