Hi,
My code is like this:
#include<string>
#include<vector>
#include<iostream>
#include<torch/script.h>
#include<opencv2/opencv.hpp>
using std::string;
using std::cout;
using std::endl;
using std::vector;
using cv::Mat;
int main() {
// Mat im = cv::imread("/root/47036.tif");
Mat im = cv::imread("./res.jpg");
return 0;
}
And my CMakeLists.txt is like this:
CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
project(segmentation)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "-std=c++14 -O3")
set(CMAKE_PREFIX_PATH ~/build/libtorch)
set (OpenCV_DIR /opt/opencv/lib/cmake/opencv4/)
find_package(Torch REQUIRED)
find_package(OpenCV REQUIRED)
add_executable(run play.cpp)
target_link_libraries(run PUBLIC
"${TORCH_LIBRARIES}"
"${OpenCV_LIBRARIES}"
)
set_property(TARGET run PROPERTY CXX_STANDARD 14)
libtorc is downloaded from official website, the file name is libtorch-shared-with-deps-1.8.1+cu102.zip
, and opencv’s commit is 04d907fb976196df62f1259808fe98a44b874db1
.
The error message is:
Scanning dependencies of target run
[ 50%] Building CXX object CMakeFiles/run.dir/play.cpp.o
[100%] Linking CXX executable run
CMakeFiles/run.dir/play.cpp.o: In function `main':
play.cpp:(.text.startup+0x43): undefined reference to `cv::imread(std::string const&, int)'
collect2: error: ld returned 1 exit status
CMakeFiles/run.dir/build.make:133: recipe for target 'run' failed
make[2]: *** [run] Error 1
CMakeFiles/Makefile2:95: recipe for target 'CMakeFiles/run.dir/all' failed
make[1]: *** [CMakeFiles/run.dir/all] Error 2
Makefile:103: recipe for target 'all' failed
make: *** [all] Error 2
I see no opencv problem if I comment part about libtorch in the code and CMakeLists.txt, so opencv works well alone, but there would be problem if I use opencv together with libtorch. How to solve this problem please ?