最近在做后处理的事情。每次看到Python那么酷炫的切片、矩阵乘法、广播,再看看C++,我就陷入无尽痛苦。为什么Numpy没有C++版本,为什么后处理都是手撸,Eigen库有很多方法可以平替Numpy,但是我不是很了解,都是现查现用,所以萌发了系统学一下的想法,之前的TensorRT部分后面我再补充一个终结篇,详细说明怎么用,再结合这里的Eigen来说一说怎么对TensorRT的后处理进行高效的移植。
首先我们就基于Eigen的3.4.0,然后利用官方手册来进行系统学习吧。
1. VS Code配置
ctrl+shift+p配置tesk.json,ctrl+shift+d配置launc.json,然后写好CMakeLists.txt和main.cpp。
2. Eigen下载及编译
eigen的文档链接:https://eigen.tuxfamily.org/dox/
建议你们下载一份文档,因为它的网站上周就挂掉了,你再想查就上不去咯。
下载好以后,不用make,直接用,你的CMakeLists.txt应该如下,注意这个版本要求C++最少是14,所以也要设置:
cmake_minimum_required(VERSION 3.10)set(CMAKE_BUILD_TYPE Debug)# 设置项目名称和版本号
project(YourProjectName VERSION 1.0)# 指定C++标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)include_directories(/home/xxxxxxxx/code/eigen) # 你下载eigen的地方# 添加可执行文件
add_executable(eigen_test main.cpp)
main.cpp如下:
#include <iostream>
#include "Eigen/Dense"using Eigen::MatrixXd;int main()
{MatrixXd m(2,2);m(0,0) = 3;m(1,0) = 2.5;m(0,1) = -1;m(1,1) = m(1,0) + m(0,1);std::cout << m << std::endl;
}
按下F5就可以运行输出结果了:
3 -1
2.5 1.5