【GAMES101】作业0学习总结

本系列博客为记录笔者在学习GAMES101课程时遇到的问题与思考。


一、环境搭建

以下说明两种环境搭建方法,一种为用原视频所提及的VirtualBox一键搭建环境(但是我的环境下出现了一点问题无法解决),另一种是自建环境(我使用的是VMware软件进行搭建)。

1、VirtualBox搭建

首先下载网盘中的 ym_VirtualBox-6.1.4-136177-Win.exe 文件下载安装VirtualBox软件,再下载网盘中 GAMES101_Ubuntu 18.04.2 (64bit).zip 文件解压出对应的虚拟机映像 GAMES101_Ubuntu 18.04.2 (64bit).vdi ,再按照闫教授作业0中的 pa0.pdf 教程完成虚拟机的创建。

本节就粗略说一下自己遇到的问题:

  • 按照闫教授的教程,创建完虚拟机,安装增强功能之后并进行相应设置之后,还是无法使用文件的拖放功能,每次拖入文件夹时只会创建在虚拟机之中创建一个空的文件夹

我查阅了许多相关资料还是无法解决该问题,不知道是虚拟机设置的问题还是软件安装的时候缺少了某些文件,不过经过测试我发现可以拖入文件,只是无法拖入一整个文件夹,所以我最后的解决方案:

  • 自己手动创建文件夹之后,再手动拖入所有的文件

2、VMware搭建

本次搭建过程参考eine K1eine的博客,再次感谢 eine K1eine的教程!以此记录方便自己下次使用。
首先打开开篇提到的百度网盘,进入自建环境文件夹中,下载其中的所有三个文件:

  1. 虚拟机镜像文件: ubuntu-20.04.1-desktop-amd64.iso
  2. VScode安装文件:code_1.78.2-1683731010_amd64.deb
  3. OpenCV源文件:opencv-4.7.0.tar.gz

然后用该虚拟机镜像创建对应的Ubuntu虚拟机,此处不会的可以参考我之前的博客VMware虚拟机的下载与安装,把其中的第4步的window10镜像修改为本次下载的Ubuntu镜像。

创建完成后将code_1.78.2-1683731010_amd64.debopencv-4.7.0.tar.gz拖入虚拟机的Download文件夹中,并解压opencv-4.7.0.tar.gz文件到当前目录下。
在这里插入图片描述
双击code_1.78.2-1683731010_amd64.deb文件即可将VScode安装至虚拟机中。
随后参考eine K1eine的博客教程,先配置g++、cmake和eigen环境。

  • g++ 配置
    sudo apt-get -y install build-essential   # 安装g++
    g++ --version 					# 安装完成后检查版本
    
  • cmake 配置
    sudo apt-get -y install cmake		#安装cmake
    cmake --version						#照例检查版本
    
  • eigen 配置
    sudo apt-get -y install libeigen3-dev
    

配置完成三件套之后再安装OpenCV依赖

sudo apt-get -y install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get -y install libcanberra-gtk-module
sudo apt-get -y install pkg-config

安装完成之后进入刚刚解压完的目录 Downloads/opencv-4.7.0下,右键在此处打开终端,依次输出以下命令

sudo mkdir build
cd build

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..

#-j8  8指同时使用8个进程,速度快,你也可以根据自己的电脑情况,用-j2 或者-j16
sudo make -j8

sudo make install

接下来配置环境变量

  1. 将库添加到系统路径

    sudo gedit /etc/ld.so.conf
    

    在文件最后一行添加include /usr/local/lib,因为makefile中默认opencv安装在该路径下的

    在这里插入图片描述
    然后进行更新

    sudo ldconfig
    
  2. 配置bash,修改bash.bashrc文件

    sudo gedit /etc/bash.bashrc
    

    在文件最后添加两行

    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    

    如下所示:

    在这里插入图片描述

    保存退出,再更新一下源

    source /etc/bash.bashrc
    

此时相关的环境就配置完成了

二、作业0解答

根据上述闫教授编写的 pa0.pdf 我们可以了解到一些Eigen库中关于向量/矩阵的创建、赋值和运算等操作,这里不熟悉的一定要仔细看一看,不然后面看代码就会一脸懵逼。
听课可知,一个向量可以用(x, y, 0)表示,而一个点可以用(x, y, 1)表示,对于作业0我们只需要先创建一个(2, 1, 1)的点,并按照 课件3:GAMES101_Lecture_03.pdf 中第28页关于旋转的操作编写对应的旋转矩阵即可。
在这里插入图片描述
即:

// rotate
Eigen::Vector3f p(2.0f,1.0f,1.0f);
Eigen::Matrix3f rotate45;
rotate45 << 
    sqrt(2)/2, -sqrt(2)/2, 1,
    sqrt(2)/2, sqrt(2)/2, 2,
    0, 0, 0;
cout << rotate45 * p << endl;

先在 Assignment0中新建build文件夹,后进入该文件夹:
在这里插入图片描述
根据 pa0.pdf 中的内容可知在build文件夹中打开终端后每次编译都需要重新输入

cmake ..
make
./Transformation

所以新建一个run0.sh的脚本,里面的内容就是上面三条命令,这样每次执行只需要执行 run0.sh就行了,在build文件夹中打开终端

touch run0.sh
gedit run0.sh

并在脚本中加入

#/bin/bash
cmake ..
make
./Transformation

保存退出后修改执行权限

chmod 777 run0.sh

之后每次只要直接运行run0.sh脚本即可

./run0.sh

若最后出现的结果是这样的,就代表运行正确:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_21891843/article/details/130643143