我想在一个图像上用opencv执行一些预处理,这个图像将被送到张量流模型。
预处理部分读入.png
文件,代码作为独立程序工作,但我想在运行tensorflow模型的程序中使用它,所以我生成了一个目标文件,如下所示。预处理程序完全独立运行。
g++ -std=c++11 preProcess.cpp -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv2 -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -c
张量流程序Inference.cc
编译如下
g++ -std=c++11 preProcess.o Inference.cc -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv -I/usr/local/include/opencv2 -I/usr/local/include/tf -I/usr/local/include/eigen3 -I/usr/local/include/tf/bazel-genfiles -g -Wall -D_DEBUG -Wshadow -Wno-sign-compare -w -L/usr/local/lib/libtensorflow_cc -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_flann -lopencv_core `pkg-config --cflags --libs protobuf` -ltensorflow_cc -o inference
这会引发以下错误
/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_State::~_State()@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `typeinfo for std::thread::_State@GLIBCXX_3.4.22'
此错误似乎是由链接-L/home/dpk/anaconda2/lib
引起的,因为当我没有链接该文件夹时编译顺利进行,但程序无法读取.png
个文件。因此,似乎该文件夹是处理.png
所必需的。
我需要我的程序来读取.png
文件以及运行tensorflow模型。我怎样才能使它们都有效?
答案 0 :(得分:0)
Tensorflow是使用gcc 6构建的,因为有一个链接器错误会阻止使用gcc 5成功编译。您必须使用gcc 6构建和链接程序以避免此链接器错误。