10.空间复杂度
概念一个程序的空间复杂度是指运行完一个程序所需的内存的大小。利用程序的空间复杂度可以对程序的运行所需要的_内存_多少有一个预先估计。一个程序执行时,除了需要储存空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。程序执行时所需存储空间包括以下两个部分:
固定部分。这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。
可变空间。这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。
示例12345def reverse(a,b): n = len(a) for i in range(n): b[i] = a[n-1-i] #完成列表的逆序
调用reverse方法时,要分配的内存空间包括:引用a,引用b、局部变量n、局部变量i。因此f(n)= 4,该算法的空间复杂度为S(n)=O(1)注:通常,我们都是用“时间复 ...
9.绘制图形
绘制直线cv2.line(img,pt1,pt2,color,thickness,lineType,shift)
img:绘制的图片对象
pt1:起始点
pt2:终止点
color:颜色,用bgr形式表示,(0,0,255)表示红色
thickness:线宽
lineType:线的类型,与plt中的线类型不一样,这里主要是指毛边
shift:缩放比例,一半不做变化
绘制矩形cv2.rectangle(img,pt1,pt2,color,thickness,lineType,shift)
参数和画直线一样,相当于画了一条对角线,根据对角线来画出矩形
绘制圆cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])
相同的参数含义与直线一样,在这里不在声明
center:圆心的坐标
radius:圆的半径
绘制椭圆cv2.ellipse(img,中心点,长宽的一半,偏移角度,从哪个角度开始,到哪个角度结束…)
长宽的一半以元祖的形式传入,如(100,50),第一个参数是长,第二个参数是宽
绘制多边 ...
9.时间复杂度
先决条件
一般来说,一个算法执行所消耗的时间从理论上是算不出来的。
一个算法花费的时间与算法中语句的执行次数是成正比的。
哪个算法语句执行次数多,它花费的时间就多。
概念
对于算法最重要的是数量级和趋势,这些是分析算法主要的部分。而计量算法基本操作数量的规模函数中那些常量因子可以忽略不计。
时间复杂度实际上就是一个函数,该函数计算的是执行基本操作的次数。一个算法语句总的执行次数是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数,记为T[N],当N不断变化时,T[N]也在不断变化,算法的执行次数的增长速率和f(N)的增长速率相同。则T[N]=O(f(N)),称O(f(N))为时间复杂度的O渐进表示法。
分类
算法完成工作最少需要多少基本操作叫做最优时间复杂度,是一种最乐观最理想的状态。
算法完成工作最多需要多少基本操作叫做最坏时间复杂度,是算法的一个保障。
算法完成工作平均需要多少基本操作叫做平均时间复杂度,它可以均匀全面的评价一个算法的好坏。
计算规则
基本操作,即只有常数项,认为其时间复杂度为O(1)
顺序结构,时间复杂度按加法进行计算
...
8.图像通道分割与融合
图像通道分割b,g,r = cv2.split(image)
将三个通道的颜色分割出来
图像通道融合img2 = cv2.merge((b,g,r))
注意传入的是元组的形式
注意传入的顺序为bgr
图像通道值的修改b[10:100,10:100] = 255
图像并排显示cv2.imshow(“img”,np.hstack((img,img2)))vstack就是竖着排
12345678910111213141516171819202122232425#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :图像通道分割与融合.py@IDE :PyCharm @Author :咋@Date :2023/1/11 20:42 """import cv2import numpy as npcv2.namedWindow("window",cv2.WINDOW_ ...
8.算法的概念
算法的概念如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器。数据结构和算法则是兵法。如果我们常看兵法,便可以做到胸有成竹,有时会事半功倍!同样,如果我们常看算法,我们写程序时也能游刃有余、明察秋毫,遇到问题时亦能入木三分、迎刃而解。对于算法而言,实现的语言并不重要,重要的是思想。算法可以有不同的语言描述实现版本(如C描述、C++描述、_Python描述_等等)
算法的五大特征
输入性:有零个或者多个外部量作为算法的输入
输出性:算法至少有一个量作为输出
确定性:算法的每条指令清晰,无歧义
有穷性:算法的每条指令的执行次数有限,执行每条指令时间也有限
可行性:算法原则上能够精确的运行,而且人们用纸和笔做有限次运算后就可完成
算法应用实际案例【示例】如果a+b+c= 1000,且a^2 +b^2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合:没学算法前:三次暴力循环
123456789import timebegin_time = time.time()for a in range(0,1001): ...
7.颜色空间转化
函数cv2.cvtColor(img,转化方式方式)
返回值是图像对象
常见的颜色空间转化方式
cv2.COLOR_BGR2RGBA,
cv2.COLOR_BGR2BGRA,
cv2.COLOR_BGR2GRAY,
cv2.COLOR_BGR2HSV,
cv2.COLOR_BGR2YUV
空间转化方式其实本质上是数字,与变量名相当于映射123import cv2print(cv2.COLOR_BGR2HSV)# return 40
代码1234567891011121314151617181920212223242526272829303132#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :颜色空间转化.py@IDE :PyCharm @Author :咋@Date :2023/1/11 19:59 """import cv2# 创建窗口cv2.namedWindow("window&q ...