积累向的视觉小知识

本文最后更新于:2023年7月26日 晚上

没有特定的主题,遇到有啥不会的就往里补充。

1.-O1,-O2,-O3,-Os优化(gcc)

  1. 使用-Q –help =optimizers来获取每个优化标识所启用的优化选项。

  2. 解释:

    1. -O,-O1:

这两个命令的效果是一样的,目的都是在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的运行速度。

  1. -O2:

该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外,还会采用几乎所有的目标配置支持的优化算法,用以提高目标代码的运行速度。

  1. -O3:

该选项除了执行-O2所有的优化选项之外,一般都是采取很多向量化算法,提高代码的并行执行程度,利用现代CPU中的流水线,Cache等。

这个选项会提高执行代码的大小,当然会降低目标代码的执行时间。

  1. -Os:

这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment padding)

  1. -Ofast:

该选项将不会严格遵循语言标准,除了启用所有的-O3优化选项之外,也会针对某些语言启用部分优化。如:-ffast-math

  1. -Og:

该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度。

2.动态连接库(共享库)和静态连接库

1.静态链接库 *.a
将需要调用的函数统一链接到可执行文件中,成为可执行文件的一部分。

  • 优点:
    运行速度快(因为已经链接到可执行文件中了)
    不需要重新编译代码就可以链接
    (因为已经和可执行文件链接在一起了,可执行文件调用链接库时可以直接跳转)
  • 缺点:
    占用内存,当多个程序调用相同的函数时,内存中就会存在该函数的多个备份

2.动态链接库 *.so
仅加入被调函数的描述信息,当程序执行时由运行链接加载库。
仅当被装入内存时,才开始运行。相对于静态链接库,动态链接库只会在内存中保留一份。

  • 优点:不占用内存;可以实现进程之间的资源共享。
    (因此动态库也称为共享库)
  • 缺点:速度比静态的慢

3.环境变量

  1. 定义:在操作系统中用来指定操作系统运行环境的一些参数,要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。
    用户通过设置环境变量,来更好的运行进程。
  • windows系统中的环境变量:PATH
    可以直接在终端输入echo %PATH%查看系统所有的环境变量
  • linux系统中的环境变量: export
    可以直接在终端输入export查看系统所有的环境变量
  • 暂时不管CMakeLists里面的环境变量
  1. linux中,添加路径到环境变量里面的方法:
    1
    echo export PATH="~/.aspera/connect/bin/:$PATH" >>.bashrc
    即,添加到.bashrc的脚本中。(也可以用vim直接编辑.bashrc内容)
  • .bashrc是一个配置文件,也是一个隐藏文件,存在于用户的家目录~下,需要用ls -a才能查看到,每次登陆bash,这个文件就会被执行一次,在文件内的代码会被运行一遍。
    参考:https://cloud.tencent.com/developer/article/1457751

  • bash: 终端的那个框

  • echo 输出命令

  • >>表示一个类似管道的意思

4.opencv配置环境

查看UGAS的opencv配置,后面新建项目如果要使用opencv,直接将.props文件复制粘贴到项目文件夹,再在VS里面添加现有属性表即可。

5.分辨率

分辨率只是数学上的一个概念,跟任何设备无关。
它仅仅是用来表示横向和纵向有多少个像素点而已,可以粗略理解为图片的尺寸以及清晰度。
参考:https://zhuanlan.zhihu.com/p/424498440
(分辨率?1080P、2K、4K?英寸?)

6. image distorition:图像畸变

7. oop: python面向对象编程

8. markdown怎么写下标:例如k1

9.markdown怎么表示矩阵:

$$\begin{matrix}
0&1&1\
1&1&0\
1&0&1\
\end{matrix}$$


积累向的视觉小知识
http://zoechen04616.github.io/2023/07/25/第一篇视觉教程/
作者
Yunru Chen
发布于
2023年7月25日
许可协议