C++前端pytorch(libtorch)和opencv编译安装环境搭建
安装opencv:
https://www.cnblogs.com/raina/p/11365854.html
下载或编译libtorch:
https://oldpan.me/archives/pytorch-c-libtorch-inference
CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(opencvCompil)
find_package(Torch REQUIRED) # 查找libtorch
find_package(OpenCV REQUIRED) # 查找OpenCV
if(NOT Torch_FOUND)
message(FATAL_ERROR "Pytorch Not Found!")
endif(NOT Torch_FOUND)
message(STATUS "Pytorch status:")
message(STATUS " libraries: ${TORCH_LIBRARIES}")
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
add_executable(opencvCompil Main.cpp)
# target_link_libraries(opencvCompil ${TORCH_LIBRARIES})
target_link_libraries(opencvCompil "${TORCH_LIBRARIES}" ${OpenCV_LIBS})
# target_link_libraries(opencvCompil ${OpenCV_LIBS})
set_property(TARGET opencvCompil PROPERTY CXX_STANDARD 11)
Main.cpp
#include <torch/torch.h>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/videoio.hpp>
using namespace cv;
using namespace std;
void drawText(Mat & image)
{
putText(image, "Hello OpenCV",
Point(20, 50),
FONT_HERSHEY_COMPLEX, 1, // font face and scale
Scalar(255, 255, 255), // white
1, LINE_AA); // line thickness and type
}
int main() {
torch::Tensor tensor = torch::rand({2, 3});
cout << tensor << endl;
// Mat image;
// image = imread("1.jpg");
// if ( image.empty() )
// {
// cout<<"No image data!"<< endl;
// return -1;
// }
// namedWindow("Display Image");
// imshow("Display Image", image);
// waitKey(0);
cout << "Built with OpenCV " << CV_VERSION << endl;
Mat image;
VideoCapture capture;
capture.open(0);
if(capture.isOpened())
{
cout << "Capture is opened" << endl;
for(;;)
{
capture >> image;
if(image.empty())
break;
drawText(image);
imshow("Sample", image);
if(waitKey(10) >= 0)
break;
}
}
else
{
cout << "No capture" << endl;
image = Mat::zeros(480, 640, CV_8UC1);
drawText(image);
imshow("Sample", image);
waitKey(0);
}
return 0;
}
执行cmake和make:
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/home/ray/pytorch/torch/share/cmake ./
make
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include/opencv4",
"/home/ray/pytorch/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}