compile caffe together with opencv3.2.0

617 views
Skip to first unread message

杜明軒

unread,
May 20, 2017, 9:40:06 AM5/20/17
to Caffe Users
Hi,

I haved install opencv3.2.0 to my home directory.

And export PKG_CONFIG to find the opencv libs and headers.

In the Makefile.config, I have uncomment OPENCV_VERSION := 3 and USE_PKG_CONFIG := 1

However, there are some link errors when compiling caffe.


CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv.build_release/lib/libcaffe.so: Undefined reference to「cv::::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
_OutputArray::_OutputArray(cv::Mat&)akefile:625: recipe for target '.build_release/tools/caffe.bin' failed
make: *** [.build_release/tools/caffe.bin] Error 1
make: *** Waiting for unfinished jobs....
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/convert_imageset.bin' failed
make: *** [.build_release/tools/convert_imageset.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:630: recipe for target '.build_release/examples/siamese/convert_mnist_siamese_data.bin' failed
make: *** [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/compute_image_mean.bin' failed
make: *** [.build_release/tools/compute_image_mean.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/extract_features.bin' failed
make: *** [.build_release/tools/extract_features.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/upgrade_solver_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_solver_proto_text.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:630: recipe for target '.build_release/examples/mnist/convert_mnist_data.bin' failed
make: *** [.build_release/examples/mnist/convert_mnist_data.bin] Error 1
.build_release/lib/libcaffe.so: Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status
Makefile:630: recipe for target '.build_release/examples/cifar10/convert_cifar_data.bin' failed
make: *** [.build_release/examples/cifar10/convert_cifar_data.bin] Error 1
.build_release/examples/cpp_classification/classification.o: 於函式 Classifier::Preprocess(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >*):
classification.cpp:(.text+0x23d): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x24d): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0x39d): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x3ad): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0x49c): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x4ad): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0x58e): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x66b): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x67c): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0x691): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0x6bc): Undefined reference to「cv::split(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >&)」
classification.cpp:(.text+0xa61): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0xab3): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0xac3): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
classification.cpp:(.text+0xb3d): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0xb4d): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/examples/cpp_classification/classification.o: 於函式 Classifier::SetMean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&):
classification.cpp:(.text+0x2ce8): Undefined reference to「cv::_OutputArray::_OutputArray(cv::Mat&)」
classification.cpp:(.text+0x2d00): Undefined reference to「cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)」
classification.cpp:(.text+0x2d15): Undefined reference to「cv::_InputArray::_InputArray(cv::Mat const&)」
.build_release/examples/cpp_classification/classification.o: 於函式 main:
classification.cpp:(.text.startup+0x218): Undefined reference to「cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)」
.build_release/lib/libcaffe.so: Undefined reference to「cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)」
.build_release/lib/libcaffe.so: Undefined reference to「vtable for cv::_InputArray」
collect2: error: ld returned 1 exit status


I try to make a simple program which use imread and merge, everything is ok.

g++ test.cpp `pkg-config opencv --cflags --libs`


test.cpp

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>


int main(int argc, char** argv) {
  cv::Mat mat = cv::imread("/home/tumh/5.jpg");
  std::vector<cv::Mat> channels;
  cv::Mat mean;
  cv::merge(channels, mean);
}

I have no idea why caffe has link errors.

thank you.




Víctor Ponce López

unread,
Nov 1, 2017, 7:58:40 AM11/1/17
to Caffe Users
Did you reach to any solution so far?
Reply all
Reply to author
Forward
0 new messages