4.栈
定义栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素,访问元素,删除元素,它的特点在于只允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置的概念,保证任何时候可以访问删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO,Last in First Out)的原理运作。
栈结构实现
Stack()创建一个空栈
push()添加一个新的元素item到栈顶
pop()弹出栈顶元素
peek()返回栈顶元素
is_empty()判断栈是否为空
size()返回栈的元素个数
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :python算法 @File :11栈.py@IDE ...
3.读取摄像头和视频数据
读取摄像头cap = cv2.VideoCapture(文件/摄像头代号)
0代表这本地的摄像头,如果外接摄像头也可以更换成其他代号,比如1
也可以是文件名,注意后缀
获取摄像头图片flag,frame = cap.read()
cap.read()会返回两个值,一个是标记,一个是该帧的图片
释放资源cap.release()
代码1234567891011121314151617181920import cv2cap = cv2.VideoCapture(0) # 摄像头count = 0 # 计数器,后面捕获图片的时候更改名字,防止图片发生覆盖while cap.isOpened(): # 读每一帧 flag返回标记,frame即为该帧图像 flag,frame = cap.read() if not flag: break else: cv2.imshow("img",frame) key = cv2.waitKey(1) # 0的话需要一直等,1的话 ...
3.双向链表
定义一种更复杂的链表是“双向链表”或“双面链表”、每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。
功能实现
结点定义
12345class Node(object): def __init__(self,item): self.item = item self.next = None #后指针 self.prev = None #前指针
链表初始化
123class DoubleLinkList(object): def __init__(self): self.__head = None
判断是否为空
12def is_empty(self): return self.__head == None
判断链表长度
12345678def length(self): cur = self.__head count = 0 while cur != None: cur = cur.next ...
2.读取与保存图片
读取图片cv2.imread(name,model)
name:图片的路径
model:读取的方式
opencv读取进来的图片数据的通道不是默认的RGB,而是BGR,所以在展示的的时候就opencv的方式去展示,而不要用matplotlib的方式去展示。
保存图片cv2.imwrite(path,img)
path:保存的路径
img:保存的图片
2.单向链表
定义单向链表也叫做单链表,是链表中最简单的一种形式,他的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域指向一个空值(None)
说明
表元素域elem用来存放具体的数据
链接域next用来存放下一个节点的位置(Python中的标识)指向下一个结点
变量p指向链表的头节点(首结点)的位置,从p出发能找到表中的任意节点。
功能实现
Node结点
1234class Node(object): def __init__(self,item): self.item = item self.next = None
链表初始化
1234567class SingleLinkList: def __init__(self,node = None): if node != None: # 不为空的话,创建结点作为头结点 headNode = Node(node) self.__head = headNode else: ...
1.创建与显示窗口
创建窗口cv2.namedWindow(name,cv2.模式)
name:自定义名称
cv2.模式:- cv2.WINDOW_NORMAL:普通窗口- cv2.WINDOW_AUTOSIZE:自动调节大小窗口
调整窗口大小cv2.resizeWindow(name,weight,high)
name:名称
weight:窗口的宽度,如800
high:窗口的长度,如600
注意调整窗口大小是cv2.resizeWindow,调整图片大小是cv2.resize,两个不要弄混了
123456import cv2cv2.namedWindow("window",cv2.WINDOW_NORMAL)cv2.resizeWindow("window",(640,280))image = cv2.imread("image.jpg")cv2.imshow("window",image)cv2.waitKey(0)
窗口显示cv2.imshow(name,mat)
name:展示的名称
mat:展示的对象 ...