Python基础-Week1

本文介绍了Python中的核心技术和库,包括NumPy、SciPy、OpenCV、Pandas和TensorFlow等,涵盖了数值计算、科学计算、图像处理和深度学习等多个方面。

1.    NumPy : NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。

(链接:    https://baike.baidu.com/item/numpy/5678437?fr=aladdin)

        SciPy : SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包。它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等。

(链接:    https://baike.baidu.com/item/SciPy)

        OpenCV : OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

(链接:    https://baike.baidu.com/item/opencv)

        Pandas : Python Data Analysis Library 或 pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作带型数据集所需的工具,同时也提供了大量能使我们快速便捷地处理数据的函数方法。

(链接:    https://baike.baidu.com/item/pandas)

        TensorFlow : TensorFlow是谷歌基于DisBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

(链接:    https://baike.baidu.com/item/TensorFlow)

2.     type(*)   #type用来显示数据类型

        float ( 单精度 )        double ( 双精度 )

           

                    ("/"为简单的除法;"//"为除法的结果取整)

3.    在Python中,

        二进制以 0b 开头   

        八进制以 0o 开头   

        十进制直接表示   

        十六进制以 0x 开头            

        进制转换:

        十进制转换为二进制 bin(*)       

        八进制转换为二进制 bin(0o*)   转换为十进制

        十六进制转换为八进制 oct(0x*)   十进制转换为八进制oct(*)

        十进制转换为十六进制 hex(*)           

        强制转换:

        将 str 类型的 num 强制转换为 int 类型

        将float类型的 a 强行转换为 int 类型

4.    True 和 False 首写字母必须大写,否则会报错

5.    非空非零全部为Ture

        

6.    字符创的引用必须成对出现;字符串的长度最多为79

                 

7.    转义字符是否可见

        (1)键入‘hello,\按下回车   次行出现...   可以接着输入 hello‘  

        (2)   

        (3)   

8.    打印回车符以及制表符

        

              

           

9.    驼峰命名法:    eg:userName,getSystemAttribute(Java)

        下划线命名法:    eg:user_name,get_system_attribute

        微软:    eg:iSocketName

        匈牙利:eg:UserName,GetSystemAttribute

10.    连接符

           

        

        

        

11.    截取:(截取位+1)

           

              

           

           

12.    注释:

        #单行注释

        多行注释

        """

        *

        """

13.    引用:花括号为占位符

        

        

        

        

14.    小数位数显示

        

15.    同行打印

        

        

        

        

16.   元组(tuple)

        元组是一个序列,其中的每一个组成都有相对应的序列号;元组和字符串一样都是不可变的,数组可以改变数据。

        若元组之内只有一个元素,那么该元组后面的逗号是不可忽略的;若有逗号分离,将被认作为元组。

        列表为中括号,元组为圆括号,字典用花括号。

           

        

        字典(dict)

        “{ }”中用“:”来分隔

        

        

        列表

        数据类型可以不同,还可以通过连接符对列表进行增加,但不可以利用“-(减号)”进行删除。

        

        

        

        列表长度

        

        

        

        向末尾追加

        

        插入

        

        set

        

        (set-两种写法)

           

        set去重

        

        元组 解包

        

        弹出

        

        间隔:打印第 1 到第 6 个元素,间隔为 2

        

        判断

        

        

        

        增加、移除

        

        最值

              

        ASCLL码

              

        修改/覆盖

        

        减法相同项:(与/或 . . .)

        

        

        

        

        

### 光流法C++源代码解析与应用 #### 光流法原理 光流法是一种在计算机视觉领域中用于追踪视频序列中运动物体的方法。它基于亮度不变性假设,即场景中的点在时间上保持相同的灰度值,从而通过分析连续帧之间的像素变化来估计运动方向和速度。在数学上,光流场可以表示为像素位置和时间的一阶导数,即Ex、Ey(空间梯度)和Et(时间梯度),它们共同构成光流方程的基础。 #### C++实现细节 在给定的C++源代码片段中,`calculate`函数负责计算光流场。该函数接收一个图像缓冲区`buf`作为输入,并初始化了几个关键变量:`Ex`、`Ey`和`Et`分别代表沿x轴、y轴和时间轴的像素强度变化;`gray1`和`gray2`用于存储当前帧和前一帧的平均灰度值;`u`则表示计算出的光流矢量大小。 #### 图像处理流程 1. **初始化和预处理**:`memset`函数被用来清零`opticalflow`数组,它将保存计算出的光流数据。同时,`output`数组被填充为白色,这通常用于可视化结果。 2. **灰度计算**:对每一像素点进行处理,计算其灰度值。这里采用的是RGB通道平均值的计算方法,将每个像素的R、G、B值相加后除以3,得到一个近似灰度值。此步骤确保了计算过程的鲁棒性和效率。 3. **光流向量计算**:通过比较当前帧和前一帧的灰度值,计算出每个像素点的Ex、Ey和Et值。这里值得注意的是,光流向量的大小`u`是通过`Et`除以`sqrt(Ex^2 + Ey^2)`得到的,再乘以10进行量化处理,以减少计算复杂度。 4. **结果存储与阈值处理**:计算出的光流值被存储在`opticalflow`数组中。如果`u`的绝对值超过10,则认为该点存在显著运动,因此在`output`数组中将对应位置标记为黑色,形成运动区域的可视化效果。 5. **状态更新**:通过`memcpy`函数将当前帧复制到`prevframe`中,为下一次迭代做准备。 #### 扩展应用:Lukas-Kanade算法 除了上述基础的光流计算外,代码还提到了Lukas-Kanade算法的应用。这是一种更高级的光流计算方法,能够提供更精确的运动估计。在`ImgOpticalFlow`函数中,通过调用`cvCalcOpticalFlowLK`函数实现了这一算法,该函数接受前一帧和当前帧的灰度图,以及窗口大小等参数,返回像素级别的光流场信息。 在实际应用中,光流法常用于目标跟踪、运动检测、视频压缩等领域。通过深入理解和优化光流算法,可以进一步提升视频分析的准确性和实时性能。 光流法及其C++实现是计算机视觉领域的一个重要组成部分,通过对连续帧间像素变化的精细分析,能够有效捕捉和理解动态场景中的运动信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值