GAMES101 课程环境搭建(Win10+Clion)及作业0说明
0. 参考资料:
Windows10下配置VSCode、Mingw、Cmake、Eigen、OpenCV环境(为GAMES101作业构筑Win环境)
games101【作业0】环境配置——windows环境配置
1. 基础软件依赖
关于gcc与cmake的安装参考之前博文
https://bbs.huaweicloud.com/blogs/336631
https://bbs.huaweicloud.com/blogs/344843
注意:
- cmake安装的时候选择Add CMake to the system PATH for all users,加入系统环境变量的路径,保证可以在命令行使用
- 命令行输入cmake --help,验证是否安装成功
- mingw要选择posix版本的Mingw下载,否则编译opencv时会出错
- mingw安装时解压到任意地方,并且把bin的路径添加到系统环境变量PATH中,完成后在命令行输入g++ -v,验证是否安装成功
2. 第三方库的编译和安装
2.1 Eigen(线性代数运算库)
下载地址:Eigen
安装说明:
- 注意版本要与opencv之间关联,这里选择3.4.0 版本安装
- 在eigen的根目录下新建一个build目录
- 打开cmake软件,
source
目录设置成eigen的根目录,build
目录设置成刚刚新建的目录,然后点击configure
,出来的makefile的格式选择mingw
,等待config结束后点击generate
。
- 管
理员权限运行cmd
,进入build
目录,运行mingw32-make
,之后运行mingw32-make install
注:此时就可以删除解压出来的eigen目录(因为上面安装的已经安装到了c盘Program File x86里了,有时候build的时候会找错路径)
2.2 OpenCV库编译
下载地址opencv-win
-
解压到任意目录,
opencv/source/
目录下新建一个build目录 -
打开cmake软件,
source目录
设置成opencv/source/
目录,build目录
设置成刚刚新建的build目录,然后点击configure
,出来的makefile的格式选择mingw
,等待config结束 -
找到
OPENCV_ENABLE_ALLOCATOR_STATS
,不勾选后面的对勾(不这样会编译错误), 再次点击configure
,之后点击generate
-
以
管理员权限运行cmd
,进入build目录,运行mingw32-make
(这个很慢),之后运行mingw32-make install
-
设置opencv的环境变量,
管理员权限运行cmd
, 执行setx -m OpenCV_DIR path_to_build/lib/
(本质就是增加环境变量OPENCV_DIR),然后把path_to_build/bin
添加到path系统环境变量里
以上用到工具及软件的版本信息如下:
- gcc: x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
- cmake: cmake-3.23.0-windows-x86_64.msi
- eigen: eigen-3.4.0.zip
- opencv: opencv-4.5.5-vc14_vc15.exe
3. CMakeLists文件适配
由于上文已经在环境变量中设置了EIGEN3_INCLUDE_DIR
变量。因此一下配置文件中要增加环境变量前缀$ENV{}
cmake_minimum_required (VERSION 2.8.11)
project (Transformation)
find_package(Eigen3 REQUIRED)
include_directories($ENV{EIGEN3_INCLUDE_DIR})
add_executable (Transformation main.cpp)
4. 关于作业0的说明
本次作业要点:
- 环境搭建与使用
- Eigen线代库的使用说明
Eigen的入门材料:
https://blog.csdn.net/hongge_smile/article/details/107296658
作业情况说明:
目标实现向量旋转
/*
* Task 0
* 给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出
* 变换后点的坐标(要求用齐次坐标进行计算)。
*/
// TODO: Define point P
Eigen::Vector3d P(2.0f, 1.0f, 1.0f);
// TODO: Define rotation matrix and transposion matrix
Eigen::Matrix3d R;
Eigen::Matrix3d T;
double theta = 45.0 / 180.0 * M_PI;
R << cos(theta), -1.0 * sin(theta), 0,
sin(theta), sin(theta), 0,
0, 0, 1;
T << 1, 0, 1,
0, 1, 2,
0, 0, 1;
// TODO: T * R * P
Eigen::Vector3d Res;
Res = T* R * P;
std::cout << Res << std::endl;
return 0;
//result:
1.70711
4.12132
1
- 点赞
- 收藏
- 关注作者
评论(0)