【Ubuntu】基于C++实现人脸识别( 三 )


注:若提示权限不够,就在选项前加上sudo 。
第二章 “hello,world!”程序
第一章已经将环境搭建好了,本章熟悉一下的基本使用 。因为要开发硬件的学习成本比较高(不可能几天讲完),所以本项目以软件开发为主,本章就来介绍一些基础概念 。
本章主要是增加熟练度的,和主线项目的推进基本无关,熟悉Linux的同学可以跳过本章 。
2.1 什么是程序
“程序”是一组计算机能识别和执行的指令,运行于计算机上来完成人们的某种需求 。而这种“指令”就是“计算机语言”,常见的“计算机语言”有C语言、C++、、Java等,嵌入式领域中常用C语言和C++ 。C++是对C语言的扩展,所以要学C++的话,建议先学C语言 。
现在来介绍具体的执行过程 。当程序员使用“计算机语言”编写出程序后,计算机实际上还是无法直接理解这些指令,此时还需要“编译器”将这些指令“编译”成计算机可以直接执行的“机器码”,最后再根据执行效果进行“调试(debug)” 。由于“编译器”只是一个软件,所以目前对于我们来说,只需要关心“编辑”(也就是编写代码)、“调试”这两个步骤就行 。开发过程中,“调试”甚至会比“编辑”的时间更长,这一点很正常,不要害怕犯错 。

【Ubuntu】基于C++实现人脸识别

文章插图
图2-1 编程步骤
2.2 “hello,world!”程序
在学习一门软件语言时,几乎所有的教程都会从“hello,world!”程序开始演示,所以本节也会演示在桌面写一个“hello,world!”程序,来熟悉在上进行cpp编译运行的流程 。
#####################指令速览#####################cd /home/lyl/桌面touch main.cppvim main.cpp######################### 将下面的代码复制到文件中:#include using namespace std;int main(){cout << "hello,world!" << endl;return 0;}########################g++ ./main.cpp -o main./main# 然后就可以在终端看到输出的hello,world!了 。
#####################终端实例#####################lyl@ubuntu:~$ ls公共的模板视频图片文档下载音乐桌面Desktoplyl@ubuntu:~$ cd 桌面lyl@ubuntu:~/桌面$ lslyl@ubuntu:~/桌面$ touch main.cpplyl@ubuntu:~/桌面$ lsmain.cpplyl@ubuntu:~/桌面$ vim main.cpp######################### 将下面的代码复制到文件中:#include using namespace std;int main(){cout << "hello,world!" << endl;return 0;}########################lyl@ubuntu:~/桌面$ g++ ./main.cpp -o mainCommand 'g++' not found, but can be installed with:sudo apt install g++lyl@ubuntu:~/桌面$ sudo apt install g++正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成下列软件包是自动安装的并且现在不需要了:linux-headers-5.4.0-42 linux-headers-5.4.0-42-genericlinux-image-5.4.0-42-generic linux-modules-5.4.0-42-genericlinux-modules-extra-5.4.0-42-generic使用'sudo apt autoremove'来卸载它(它们) 。将会同时安装下列软件:binutils binutils-common binutils-x86-64-linux-gnu g++-9 gcc gcc-9 libasan5libbinutils libc-dev-bin libc6 libc6-dbg libc6-dev libcrypt-devlibctf-nobfd0 libctf0 libgcc-9-dev libitm1 liblsan0 libquadmath0libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev manpages-dev建议安装:binutils-doc g++-multilib g++-9-multilib gcc-9-doc gcc-multilib makeautoconf automake libtool flex bison gcc-doc gcc-9-multilib gcc-9-localesglibc-doc libstdc++-9-doc下列【新】软件包将被安装:binutils binutils-common binutils-x86-64-linux-gnu g++ g++-9 gcc gcc-9libasan5 libbinutils libc-dev-bin libc6-dev libcrypt-dev libctf-nobfd0libctf0 libgcc-9-dev libitm1 liblsan0 libquadmath0 libstdc++-9-dev libtsan0libubsan1 linux-libc-dev manpages-dev下列软件包将被升级:libc6 libc6-dbg升级了 2 个软件包,新安装了 23 个软件包,要卸载 0 个软件包,有 249 个软件包未被升级 。需要下载 58.5 MB 的归档 。解压缩后会消耗 121 MB 的额外空间 。您希望继续执行吗? [Y/n] y获取:1 https://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libc6-dbg amd64 2.31-0ubuntu9.9 [20.0 MB]获取:2 https://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libc6 amd64 2.31-0ubuntu9.9 [2,722 kB]获取:3 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 binutils-common amd64 2.34-6ubuntu1.6 [207 kB]获取:4 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libbinutils amd64 2.34-6ubuntu1.6 [473 kB]获取:5 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libctf-nobfd0 amd64 2.34-6ubuntu1.6 [47.4 kB]获取:6 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libctf0 amd64 2.34-6ubuntu1.6 [46.6 kB]获取:7 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 binutils-x86-64-linux-gnu amd64 2.34-6ubuntu1.6 [1,613 kB]获取:8 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 binutils amd64 2.34-6ubuntu1.6 [3,376 B]获取:9 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libitm1 amd64 10.5.0-1ubuntu1~20.04 [26.2 kB]获取:10 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libasan5 amd64 9.4.0-1ubuntu1~20.04.2 [2,752 kB]获取:11 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 liblsan0 amd64 10.5.0-1ubuntu1~20.04 [835 kB]获取:12 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libtsan0 amd64 10.5.0-1ubuntu1~20.04 [2,016 kB]获取:13 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libubsan1 amd64 10.5.0-1ubuntu1~20.04 [785 kB]获取:14 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libquadmath0 amd64 10.5.0-1ubuntu1~20.04 [146 kB]获取:15 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libgcc-9-dev amd64 9.4.0-1ubuntu1~20.04.2 [2,359 kB]获取:16 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 gcc-9 amd64 9.4.0-1ubuntu1~20.04.2 [8,276 kB]获取:17 https://mirrors.aliyun.com/ubuntu focal/main amd64 gcc amd64 4:9.3.0-1ubuntu2 [5,208 B]获取:18 https://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libc-dev-bin amd64 2.31-0ubuntu9.9 [71.8 kB]获取:19 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 linux-libc-dev amd64 5.4.0-163.180 [1,111 kB]获取:20 https://mirrors.aliyun.com/ubuntu focal/main amd64 libcrypt-dev amd64 1:4.4.10-10ubuntu4 [104 kB]获取:21 https://mirrors.aliyun.com/ubuntu focal-updates/main amd64 libc6-dev amd64 2.31-0ubuntu9.9 [2,519 kB]获取:22 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 libstdc++-9-dev amd64 9.4.0-1ubuntu1~20.04.2 [1,722 kB]获取:23 https://mirrors.aliyun.com/ubuntu focal-security/main amd64 g++-9 amd64 9.4.0-1ubuntu1~20.04.2 [8,421 kB]获取:24 https://mirrors.aliyun.com/ubuntu focal/main amd64 g++ amd64 4:9.3.0-1ubuntu2 [1,604 B]获取:25 https://mirrors.aliyun.com/ubuntu focal/main amd64 manpages-dev all 5.05-1 [2,266 kB]已下载 58.5 MB,耗时 10秒 (5,975 kB/s)正在预设定软件包 ...(正在读取数据库 ... 系统当前共安装有 199106 个文件和目录 。)准备解压 .../libc6-dbg_2.31-0ubuntu9.9_amd64.deb...正在解压 libc6-dbg:amd64 (2.31-0ubuntu9.9) 并覆盖 (2.31-0ubuntu9.7) ...准备解压 .../libc6_2.31-0ubuntu9.9_amd64.deb...正在解压 libc6:amd64 (2.31-0ubuntu9.9) 并覆盖 (2.31-0ubuntu9.7) ...正在设置 libc6:amd64 (2.31-0ubuntu9.9) ...正在选中未选择的软件包 binutils-common:amd64 。(正在读取数据库 ... 系统当前共安装有 199263 个文件和目录 。)准备解压 .../00-binutils-common_2.34-6ubuntu1.6_amd64.deb...正在解压 binutils-common:amd64 (2.34-6ubuntu1.6) ...正在选中未选择的软件包 libbinutils:amd64 。准备解压 .../01-libbinutils_2.34-6ubuntu1.6_amd64.deb...正在解压 libbinutils:amd64 (2.34-6ubuntu1.6) ...正在选中未选择的软件包 libctf-nobfd0:amd64 。准备解压 .../02-libctf-nobfd0_2.34-6ubuntu1.6_amd64.deb...正在解压 libctf-nobfd0:amd64 (2.34-6ubuntu1.6) ...正在选中未选择的软件包 libctf0:amd64 。准备解压 .../03-libctf0_2.34-6ubuntu1.6_amd64.deb...正在解压 libctf0:amd64 (2.34-6ubuntu1.6) ...正在选中未选择的软件包 binutils-x86-64-linux-gnu 。准备解压 .../04-binutils-x86-64-linux-gnu_2.34-6ubuntu1.6_amd64.deb...正在解压 binutils-x86-64-linux-gnu (2.34-6ubuntu1.6) ...正在选中未选择的软件包 binutils 。准备解压 .../05-binutils_2.34-6ubuntu1.6_amd64.deb...正在解压 binutils (2.34-6ubuntu1.6) ...正在选中未选择的软件包 libitm1:amd64 。准备解压 .../06-libitm1_10.5.0-1ubuntu1~20.04_amd64.deb...正在解压 libitm1:amd64 (10.5.0-1ubuntu1~20.04) ...正在选中未选择的软件包 libasan5:amd64 。准备解压 .../07-libasan5_9.4.0-1ubuntu1~20.04.2_amd64.deb...正在解压 libasan5:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在选中未选择的软件包 liblsan0:amd64 。准备解压 .../08-liblsan0_10.5.0-1ubuntu1~20.04_amd64.deb...正在解压 liblsan0:amd64 (10.5.0-1ubuntu1~20.04) ...正在选中未选择的软件包 libtsan0:amd64 。准备解压 .../09-libtsan0_10.5.0-1ubuntu1~20.04_amd64.deb...正在解压 libtsan0:amd64 (10.5.0-1ubuntu1~20.04) ...正在选中未选择的软件包 libubsan1:amd64 。准备解压 .../10-libubsan1_10.5.0-1ubuntu1~20.04_amd64.deb...正在解压 libubsan1:amd64 (10.5.0-1ubuntu1~20.04) ...正在选中未选择的软件包 libquadmath0:amd64 。准备解压 .../11-libquadmath0_10.5.0-1ubuntu1~20.04_amd64.deb...正在解压 libquadmath0:amd64 (10.5.0-1ubuntu1~20.04) ...正在选中未选择的软件包 libgcc-9-dev:amd64 。准备解压 .../12-libgcc-9-dev_9.4.0-1ubuntu1~20.04.2_amd64.deb...正在解压 libgcc-9-dev:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在选中未选择的软件包 gcc-9 。准备解压 .../13-gcc-9_9.4.0-1ubuntu1~20.04.2_amd64.deb...正在解压 gcc-9 (9.4.0-1ubuntu1~20.04.2) ...正在选中未选择的软件包 gcc 。准备解压 .../14-gcc_4%3a9.3.0-1ubuntu2_amd64.deb...正在解压 gcc (4:9.3.0-1ubuntu2) ...正在选中未选择的软件包 libc-dev-bin 。准备解压 .../15-libc-dev-bin_2.31-0ubuntu9.9_amd64.deb...正在解压 libc-dev-bin (2.31-0ubuntu9.9) ...正在选中未选择的软件包 linux-libc-dev:amd64 。准备解压 .../16-linux-libc-dev_5.4.0-163.180_amd64.deb...正在解压 linux-libc-dev:amd64 (5.4.0-163.180) ...正在选中未选择的软件包 libcrypt-dev:amd64 。准备解压 .../17-libcrypt-dev_1%3a4.4.10-10ubuntu4_amd64.deb...正在解压 libcrypt-dev:amd64 (1:4.4.10-10ubuntu4) ...正在选中未选择的软件包 libc6-dev:amd64 。准备解压 .../18-libc6-dev_2.31-0ubuntu9.9_amd64.deb...正在解压 libc6-dev:amd64 (2.31-0ubuntu9.9) ...正在选中未选择的软件包 libstdc++-9-dev:amd64 。准备解压 .../19-libstdc++-9-dev_9.4.0-1ubuntu1~20.04.2_amd64.deb...正在解压 libstdc++-9-dev:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在选中未选择的软件包 g++-9 。准备解压 .../20-g++-9_9.4.0-1ubuntu1~20.04.2_amd64.deb...正在解压 g++-9 (9.4.0-1ubuntu1~20.04.2) ...正在选中未选择的软件包 g++ 。准备解压 .../21-g++_4%3a9.3.0-1ubuntu2_amd64.deb...正在解压 g++ (4:9.3.0-1ubuntu2) ...正在选中未选择的软件包 manpages-dev 。准备解压 .../22-manpages-dev_5.05-1_all.deb...正在解压 manpages-dev (5.05-1) ...正在设置 manpages-dev (5.05-1) ...正在设置 binutils-common:amd64 (2.34-6ubuntu1.6) ...正在设置 linux-libc-dev:amd64 (5.4.0-163.180) ...正在设置 libctf-nobfd0:amd64 (2.34-6ubuntu1.6) ...正在设置 libc6-dbg:amd64 (2.31-0ubuntu9.9) ...正在设置 libasan5:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在设置 libquadmath0:amd64 (10.5.0-1ubuntu1~20.04) ...正在设置 libubsan1:amd64 (10.5.0-1ubuntu1~20.04) ...正在设置 libcrypt-dev:amd64 (1:4.4.10-10ubuntu4) ...正在设置 libbinutils:amd64 (2.34-6ubuntu1.6) ...正在设置 libc-dev-bin (2.31-0ubuntu9.9) ...正在设置 liblsan0:amd64 (10.5.0-1ubuntu1~20.04) ...正在设置 libitm1:amd64 (10.5.0-1ubuntu1~20.04) ...正在设置 libtsan0:amd64 (10.5.0-1ubuntu1~20.04) ...正在设置 libctf0:amd64 (2.34-6ubuntu1.6) ...正在设置 libgcc-9-dev:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在设置 libc6-dev:amd64 (2.31-0ubuntu9.9) ...正在设置 binutils-x86-64-linux-gnu (2.34-6ubuntu1.6) ...正在设置 libstdc++-9-dev:amd64 (9.4.0-1ubuntu1~20.04.2) ...正在设置 binutils (2.34-6ubuntu1.6) ...正在设置 gcc-9 (9.4.0-1ubuntu1~20.04.2) ...正在设置 gcc (4:9.3.0-1ubuntu2) ...正在设置 g++-9 (9.4.0-1ubuntu1~20.04.2) ...正在设置 g++ (4:9.3.0-1ubuntu2) ...update-alternatives: 使用 /usr/bin/g++ 来在自动模式中提供 /usr/bin/c++ (c++)正在处理用于 man-db (2.9.1-1) 的触发器 ...正在处理用于 libc-bin (2.31-0ubuntu9.7) 的触发器 ...lyl@ubuntu:~/桌面$ g++ ./main.cpp -o mainlyl@ubuntu:~/桌面$ ./mainhello,world!