Python深度学习及智能车竞赛实践 课件汇总 第6-11章 文件和数据格式化-智能车竞赛目标检测任务的CNN模型设计与部署_第1页
Python深度学习及智能车竞赛实践 课件汇总 第6-11章 文件和数据格式化-智能车竞赛目标检测任务的CNN模型设计与部署_第2页
Python深度学习及智能车竞赛实践 课件汇总 第6-11章 文件和数据格式化-智能车竞赛目标检测任务的CNN模型设计与部署_第3页
Python深度学习及智能车竞赛实践 课件汇总 第6-11章 文件和数据格式化-智能车竞赛目标检测任务的CNN模型设计与部署_第4页
Python深度学习及智能车竞赛实践 课件汇总 第6-11章 文件和数据格式化-智能车竞赛目标检测任务的CNN模型设计与部署_第5页
已阅读5页,还剩488页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python深度学习及智能车竞赛实践课程内容及学习要求简介第六章文件和数据格式化Python深度学习及智能车竞赛实践目录第3页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库01文件1.1文件的理解1.2文件的打开和关闭1.3文件的读取和写入1.4实例:赛车道自动绘制目录第4页格式化将字符串按照一定规格和式样进行规范将一组数据按照一定规格和式样进行规范:表示、存储、运算等"{

}{

}{

}".format()字符串格式化数据格式化文件和数据格式化1.1文件的理解文件是数据的抽象和集合文件是存储在辅助存储器上的数据序列文件是数据存储的一种形式文件展现形态:文本文件和二进制文件1.1文件的理解文本文件vs.二进制文件文本文件和二进制文件只是文件的展示方式本质上,所有文件都是二进制形式存储形式上,所有文件采用两种方式展示1.1文件的理解文本文件由单一特定编码组成的文件,如UTF-8编码由于存在编码,也被看成是存储着的长字符串适用于例如:.txt文件、.py文件等1.1文件的理解直接由比特0和1组成,没有统一字符编码一般存在二进制0和1的组织结构,即文件格式适用于例如:.png文件、.avi文件等二进制文件1.1文件的理解文本形式二进制形式(十六进制显示)"全国大学生智能汽车竞赛"全国大学生智能汽车竞赛b'\xc8\xab\xb9\xfa\xb4\xf3\xd1\xa7\xc9\xfa\xd6\xc7\xc4\xdc\xc6\xfb\xb3\xb5\xbe\xba\xc8\xfc'1.1文件的理解6.1testfile.txt文件保存:"全国大学生智能汽车竞赛"#以文本形式打开文件,编码方式为utf-8#r表示读文件,t表示文本格式tf=open("test_file.txt","rt")print(tf.readline())tf.close()>>>全国大学生智能汽车竞赛1.1文件的理解#以二进制形式打开文件#r表示读文件,b表示二进制格式bf=open("test_file.txt","rb")print(bf.readline())bf.close()>>>b'\xe5\x85\xa8\xe5\x9b\xbd\xe5\xa4\xa7\xe5\xad\xa6\xe7\x94\x9f\xe6\x99\xba\xe8\x83\xbd\xe6\xb1\xbd\xe8\xbd\xa6\xe7\xab\x9e\xe8\xb5\x9b'无论文件创建为文本文件或者二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,打开后的操作不同。1.1文件的理解6.2readbinfile.txt文件保存:"全国大学生智能汽车竞赛"01文件1.1文件概述1.2文件的打开和关闭1.3文件的读取和写入1.4实例:赛车道自动绘制目录第13页Python对文本文件和二进制文件采用统一的操作步骤:

“打开-操作-关闭”1.2文件的打开和关闭文件的打开<变量名>=open(<文件名>,<打开模式>)文件句柄文件路径和名称源文件同目录可省路径文本or二进制读or写1.2文件的打开和关闭文件路径和名称源文件同目录可省路径"D:/pycodes/c6/a.txt""D:\\pycodes\\c6\\a.txt"“a.txt""./pycodes/c6/a.txt"1.2文件的打开和关闭文件路径<变量名>=open(<文件名>,<打开模式>)文件的打开模式描述'r'只读模式,默认值,如果文件不存在,返回FileNotFoundError'w'覆盖写模式,文件不存在则创建,存在则完全覆盖'x'创建写模式,文件不存在则创建,存在则返回FileExistsError'a'追加写模式,文件不存在则创建,存在则在文件最后追加内容'b'二进制文件模式't'文本文件模式,默认值'+'与r/w/x/a一同使用,在原功能基础上增加同时读写功能1.2文件的打开和关闭f=open("a.txt")f=open("a.txt","rt")f=open("a.txt","w")f=open("a.txt","a+")f=open("a.txt","x")f=open("a.txt","b")f=open("a.txt","wb")-文本形式、只读模式、默认值-文本形式、只读模式、同默认值-文本形式、覆盖写模式-文本形式、追加写模式+读文件-文本形式、创建写模式-二进制形式、只读模式-二进制形式、覆盖写模式1.2文件的打开和关闭文件打开模式#文本形式打开文件tf=open("a.txt","rt")print(tf.readline())tf.close()#二进制形式打开文件bf=open("a.txt","rb")print(bf.readline())bf.close()1.2文件的打开和关闭文件使用<变量名>.close()文件句柄1.2文件的打开和关闭文件的关闭#二进制形式打开文件bf=open("a.txt","rb")print(bf.readline())bf.close()01文件1.1文件概述1.2文件的打开和关闭1.3文件的读取和写入1.4实例:赛车道自动绘制目录第21页1.3文件的读取和写入操作方法描述<f>.read(size=-1)

读入全部内容;

如果给出参数,读入前size长度

>>>s=f.read(2)"全国"<f>.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度

>>>s=f.readline()

"全国大学生智能汽车竞赛"<f>.readlines(hint=-1)读入文件所有行,以每行为元素形成列表如果给出参数,读入前hint行

>>>s=f.readlines()[‘全国大学生智能汽车竞赛\n’,’智慧交通创意赛\n’]文件读取方法遍历全文件:方法一1.3文件的读取和写入:一次读入,统一处理#实例6.3.1readtextfile.py读取文件内容f=open("test_file.txt","r",encoding="utf-8")str=f.read()print("theresultofreadingis:",str)f.close()6.3.1readtextfile.py#实例6.3.2readtextfile.py读取文件内容f=open("test_file.txt","r",encoding="utf-8")str=f.read(5)print("theresultofreadingis:",str)print("theremainingwordsare:",f.read())f.close():按数量读入,逐步处理1.3文件的读取和写入遍历全文件:方法二6.3.2readtextfile.py#实例6.3.3readtextfile2.py读取文件内容f=open("test_file2.txt","r",encoding="utf-8")print(“theresultofreadingis:\n)forlineinf.readlines():print(line)f.close()1.3文件的读取和写入逐行遍历文件:方法一:一次读入,分行处理6.3.3readtextfile2.py1.3文件的读取和写入:分行读入,逐行处理逐行遍历文件:方法二#实例6.3.4readtextfile2.py读取文件内容f=open("test_file2.txt","r",encoding="utf-8")print(“theresultofreadingis:\n)forlineinf:print(line)f.close()6.3.4readtextfile2.py操作方法描述<f>.write(s)向文件写入一个字符串或字节流

>>>f.write("全国大学生智能汽车竞赛")

<f>.writelines(lines)将一个元素全为字符串的列表写入文件

>>>ls=["智能车","智慧交通","自动驾驶"]

>>>f.writelines(ls)"智能车智慧交通自动驾驶"1.3文件的读取和写入文件写入方法操作方法描述<f>.seek(offset)改变当前文件操作指针的位置,offset含义如下:

0–文件开头;1–当前位置;2–文件结尾

>>>f.seek(0)#回到文件开头

1.3文件的读取和写入文件的指针1.3文件的读取和写入#实例6.9writefile.pywrite()方法使用f=open("test_file3.txt","w+",encoding="utf-8")print(f.write("全国大学生\n智能汽车竞赛"))f.close()6.9writefile.py1.3文件的读取和写入#实例6.10writelines.pywritelines()方法使用f=open("test_file4.txt","w+",encoding="utf-8")ls=["全国大学生\n","智能汽车\n","竞赛"]f.writelines(ls)f.close()6.10writelines.py-写入一个字符串列表>>>(没有任何输出)文件打开后,对文件的读写有一个指针,对文件进行读写操做时,指针将向前进,再次读写的内容将从指针的新位置开始。因此返回结果为空。1.3文件的读取和写入#实例6.10.1writelines.pywritelines()方法使用f=open("test_file4.txt","w+",encoding="utf-8")ls=["全国大学生\n","智能汽车\n","竞赛"]f.writelines(ls)for

linein

f:print(line)f.close()1.3文件的读取和写入#实例6.10.1writelines.pywritelines()方法使用f=open("test_file4.txt","w+",encoding="utf-8")ls=["全国大学生\n","智能汽车\n","竞赛"]f.writelines(ls)f.seek(0)for

linein

f:print(line)f.close()01文件1.1文件概述1.2文件的打开和关闭1.3文件的读取和写入1.4实例:赛车道自动绘制目录第33页问题分析80,0,50,90,0.5,0.5,0.50,1,70,180,0.5,0.5,0.50,0,50,90,0.5,0.5,0.5100,0,50,90,0.5,0.5,0.5300,1,60,270,0.5,0.5,0.5500,1,50,90,0.5,0.5,0.5……数字中包含行进方式、距离、方向、颜色信息chedaoxian1.csv1.4赛车道自动绘制需求:根据脚本来绘制图形?不通过改变代码而通过改变数据绘制不同轨迹数据脚本是自动化最重要的第一步1.4赛车道自动绘制问题分析步骤1:定义数据文件格式(接口)

步骤2:编写程序,根据文件接口解析参数绘制赛车道

步骤3:编制数据文件1.4赛车道自动绘制基本思路

直行距离80,0,50,90,0.5,0.5,0.50,1,70,180,0.5,0.5,0.50,0,50,90,0.5,0.5,0.5弧线方向1:顺时针0:逆时针弧的角度RGB三个通道颜色0-1之间浮点数弧的半径1.4赛车道自动绘制数据接口定义python内置函数,根据提供的函数对指定的序列做映射。Map函数返回每次function函数返回值的新列表。map()

函数的格式:

map(function,iterable,...)接受一个函数名一个或多个可迭代的序列1.4赛车道自动绘制map函数>>>def

square(x):

return

x**2>>>list(map(square,[1,2,3,4,5]))[1,4,9,16,25]>>>list(map(int,'1234'))[1,2,3,4]>>>list(map(eval,'1234'))[1,2,3,4]>>>list(map(eval,['1','2','3','4']))[1,2,3,4]>>>

list(map(eval,['80','0','50','90','0.5','0.5',

'0.5']))[80,0,50,90,0.5,0.5,0.5]1.4赛车道自动绘制6.11lineauodraw.py1.4赛车道自动绘制理解方法思维,学会举一反三自动化思维:数据和功能分离,数据驱动的自动运行接口化设计:格式化设计接口,清晰明了二维数据应用:应用维度组织数据,二维数据最常用1.4赛车道自动绘制

作业拓展:扩展接口设计,增加更多控制接口扩展功能设计,增加弧形等更多功能目录第42页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库OS(OperatingSystem),即操作系统,OS库用于和系统进行交互,提供了非常丰富的文件及目录读写的方法,常用的有:1.os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径;2.os.path.isdir()用于判断对象是否为一个目录;3.os.path.isfile()用于判断对象是否为一个文件。6.12ostest.py2.OS库目录第44页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库Zipfile库用于zip格式编码的压缩和解压缩的,可以用来操作zip文件,提供了创建、打开、读取、写入、添加及列出zip文件的方法,其中ZipFile方法用来创建和读取zip文件。6.13zipfiletest.pyZipFile(file,mode='r',compression=ZIP_STORED,allowZip64=True)参数含义file文件路径mode操作含义,与文件操作中相同,默认为r。compression压缩方法,默认为ZIP_STORED。allowZip64操作的压缩包文件大小大于2G时应该True,默认为True,不用管它。模式含义w创建一个新的压缩包文件。r读取已有的压缩包文件。a向已有的压缩包文件中压缩文件。3.zipfile库实例:车辆图片数据处理基本思路步骤1:解压缩文件步骤2:读取文件名信息,生成数据列表步骤3:乱序、切分训练集和验证集步骤4:生成训练集和验证集文本文件6.14VehicleZip_DataList.py3.zipfile库实例:车辆图片数据处理基本思路3.zipfile库一般解压缩文件是大数据分析、机器学习第一步;从文件夹名称或文件名字提出图片标签值;乱序,使得训练出的模型泛化能力更强;切分训练集和验证集。目录第48页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库04数据的格式化和处理4.1数据组织的维度4.2json库4.3车辆图片json文件处理目录第49页一组数据在被计算机处理前需要进行一定的组织,表明数据之间的基本关系和逻辑,进而形成“数据的维度”。根据数据的关系不同,数据组织可以分为:一维数据二维数据高维数据4.1数据组织的维度一维数据的表示一维数据是最简单的数据组织类型,由于是线性结构,在Python语言中主要采用列表形式表示。例如:一行赛车道信息采用一个列表变量表示。>>>ls=[80,0,50,90,0.5,0.5,0.5]>>>print(ls)[80,0,50,90,0.5,0.5,0.5]一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中的数组和集合等概念;4.1数据组织的维度一维数据的文件存储有多种方式,总体思路是采用特殊字符分隔各数据。常用存储方法有如下4种。(1)采用空格分隔元素,例如:

80050900.50.50.5(2)采用逗号分隔元素,例如:

80,0,50,90,0.5,0.5,0.5(3)采用换行分隔包括,例如:

80

0

50

……(4)其他特殊符号分隔,以分号分隔为例,例如:

80;0;50;90;0.5;0.5;0.5一维数据的存储4.1数据组织的维度逗号分割的存储格式叫做CSV格式(Comma-SeparatedValues,即逗号分隔值),是一种通用的、相对简单的文件格式,在商业和科学上广泛应用,大部分编辑器都支持直接读入或保存文件为CSV格式。一维数据的存储4.1数据组织的维度二维数据,也称表格数据,由关联关系数据构成,采用表格方式组织,对应于数学中的矩阵,常见的表格都属于二维数据,如赛车道绘制实例中多行数据信息。二维数据的存储4.1数据组织的维度6.17readdata2.py6.18readdata2-2.py04数据的格式化和处理4.1数据组织的维度4.2json库4.3车辆图片json文件处理目录第55页高维数据可以由键值对组成的字典类型的数据做为列表的元素构成,采用对象方式组织,可以多层嵌套,属于整合度更好的数据组织方式;高维数据在网络系统中十分常用,HTML、XML、JSON等都是高维数据组织的语法结构。{"北航学生":[ {"姓氏”:"张","名字":"三","单位":"交通学院"},{"姓氏":"李","名字":"四","单位":"宇航学院"},{"姓氏":"黄","名字":"五","单位":"动力学院"}]}高维数据的存储4.2json库JSON(JavaScript

ObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,可以在多种语言之间进行数据交换,同时也易于机器解析和生成。经常用于接口数据传输、序列化、配置文件等,json的常用形式有2种:键值对形式、数组形式。方法说明dumps()将Python对象编码成json字符串loads()解码json数据,返回python对象dump()将python对象编码成json数据并写入json文件中load()从json文件中读取数据并解码为Python对象PythonJSONdictobjectlist,tuplearraystr,unicodestringint,long,floatnumberTruetrueFalsefalseNonenull

4.2json库6.20dicttojson.py6.21jsontodict.py04数据的格式化和处理4.1数据组织的维度4.2json库4.3车辆图片json文件处理目录第58页6.22json_to_txt.py基本思路步骤1:读取json文件的字典数据;步骤2:遍历每个键值对元素,生成一行数据;步骤3:每行数据写入文本文件中。4.3车辆图片json文件处理目录第60页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第61页PIL(PythonImageLibrary)库是Python语言的第三方库,需要通过pip工具安装。:\>pipinstallpillow

或者

pip3installpillowPIL库主要有两方面功能需求:图像归档:对图像进行批处理、生成图像预览、图像格式转换等;图像处理:图像基本处理、像素处理、颜色处理等。5.1PIL库概述PIL库Image类解析在PIL中,PIL库中总共包含20多个与图像相关的类,这些类可以看成PIL库的子库或者子模块,其中Image类是最常用、最重要的模块,任何一个图像文件都可以用Image对象表示。方法描述Image.open(filename)根据参数加载图像文件Image.new(mode,size,color)根据给定参数创建一个新的图像Image.open(StringIO.StringIO(buffer))从字符串中获取图像Image.frombytes(mode,size,data)根据像素点data创建图像Image.verify()对图像文件完整性进行检查,返回异常5.1PIL库概述Image类有4个处理图片的常用属性

属性描述Image.format标识图像格式或来源,如果图像不是从文件读取,值是NoneImage.mode图像的色彩模式,"L"灰度图像、"RGB"真彩色图像、"CMYK"出版图像Image.size图像宽度和高度,单位是像素(px),返回值是二元元组(tuple)Image.palette调色板属性,返回一个ImagePalette类型PIL库Image类解析5.1PIL库概述实例:使用Image打开图像文件。#实例6.23pil1.py图片格式转换fromPILimportImage#打开图像文件img=Image.open("pic1.jpg")#调用show()方法显示图片img.show()#查看图片属性print(img.format)print(img.size)print(img.mode)print(img.palette)PIL库Image类解析5.1PIL库概述05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第66页PIL库支持几乎所有格式的图像,PIL库中有两种方法可以对图像进行格式之间的转换。方法描述Image.save(filename,format)将图像保存为filename文件名,format是图片格式Image.convert(mode)使用不同的参数,转换图像为新的模式PIL库Image类-图像格式转换方法5.2图像格式转换方法#实例6.24pil2.py图片格式转换fromPILimportImage#打开图片文件img=Image.open("pic1.jpg")#查看test.jpg图片格式print(img.mode)#通过save()方法将其转换为bmp格式img.save("jpg-bmp.bmp")#将RGB三通道图片通过convert()方法转换为RGBA四通道png图片im=img.convert("RGBA")print(im.mode)im.save("jpg-png.png")PIL库Image类-图像格式转换方法5.2图像格式转换方法05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第69页方法描述Image.resize(size,resample=image.BICUBIC,box=None,reducing_gap=None)将图像保存为size大小,size为元组类型参数,(width,height),表示图片缩放后的尺寸,resample参数为图像重采样滤波器,box参数实现对指定区域图片进行缩放操作,reducing_gap用于优化图片的缩放效果Image.thumbnail(size)创建图像的缩略图,size是缩略图尺寸的二元元组5.3图像缩放方法PIL库Image类-图像缩放方法#实例6.25pil3.py图片局部放大fromPILimportImageimg=Image.open("pic1.jpg")print("原图像大小为:{}".format(img.size))try:

im=img.resize((1280,960),resample=Image.LANCZOS,box=(0,0,320,480))

im.show()

im.save("test_resize.jpg")print("放大后图像大小为:{}".format(im.size))exceptIOError:print("ResizeDefault!!!")PIL库Image类-图像缩放方法5.3图像缩放方法#6.26pil4.py,thumbnail()方法创建缩略图fromPILimportImageimg=Image.open("pic1.jpg")try:

img.thumbnail((150,100))

img.show()

img.save("test_thubm.jpg")print(img.size)exceptIOError:print("ResizeDefault!!!")结果显示缩小后的图片尺寸为(133,100),因为Pillow会对原图像的长、宽进行等比例缩小PIL库Image类-图像缩放方法5.3图像缩放方法05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第73页Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作split()方法能够将RGB图像各颜色通道提取出来;merge()方法能够将各独立通道再合成一幅新的图像。方法描述Image.point(func)根据函数func功能对每个元素进行运算,返回图像副本Image.split()提取RGB图像的每个颜色通道,返回图像副本Image.merge(mode,bands)合并通道,采用mode色彩,bands是新色的色彩通道Image.blend(im1,im2,alpha)将两幅图片im1和im2按照如下公式插值后生成新的图像:im1*(1.0-alpha)+im2*alphaPIL库Image类-图像分离与融合方法5.4图像分离和融合方法#6.27pil5.py,图像的分离fromPILimportImageimg=Image.open("pic1.jpg")#利用split()方法分离颜色通道,产生3个Image对象r,g,b=img.split()r.save("r.jpg")g.save("g.jpg")b.save("b.jpg")PIL库Image类-图像分离与融合方法5.4图像分离和融合方法#实例6.28pil6.pymerge方法使用fromPILimportImageimg=Image.open("pic1.jpg")#利用split()方法分离颜色通道,产生3个Image对象r,g,b=img.split()#使用merge()方法重新组合三颜色通道(b,g,r)img_merge=Image.merge("RGB",[b,g,r])img_merge.save("img_merge.jpg")PIL库Image类-图像分离与融合方法5.4图像分离和融合方法#实例6.29pil7.py图片融合fromPILimportImageimg1=Image.open("pic1.jpg")img2=Image.open("map.jpg")#利用resize()方法使img2大小与img1一致img=img2.resize(img1.size)#分别对两张图片进行颜色通道分离r1,g1,b1=img1.split()r2,g2,b2=img.split()#使用merge()方法重新组合img_merge=Image.merge("RGB",(r1,g2,b1))img_merge.save("merge.jpg")img_blend=Image.blend(img1,img,0.5)img_blend.save("blend.jpg")PIL库Image类-图像分离与融合方法5.4图像分离和融合方法05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第78页PIL库Image类-图像的几何变换方法描述Image.transpose(method)实现图像的垂直、水平翻转等Image.rotate(angle,resample=PIL.Image.NEAREST,expand=None,center=None,translate=None,fillcolor=None)把图像旋转angle角度,resample为重采样滤波器,默认值为PIL.Image.NEAREST最近邻插值方法,expand是否对图像进行扩展,center指定旋转中心,translate对旋转后的图像进行平移,fillcolor为图像旋转后,对图像之外的区域进行填充。Image.transform(size,method,data=None,resample=0)对图像进行变换操作,通过指定的变换方式,产生一张规定大小的新图像5.5图像几何变换方法PIL库Image类-图像的几何变换#实例6.30pil8.py图像几何变换fromPILimportImageimg=Image.open("pic1.jpg")#对图像进行上下垂直翻转img_transpose=img.transpose(Image.Transpose.FLIP_TOP_BOTTOM)img_transpose.save("img_transpose.jpg")#对图像进行旋转操作img_rotate=img.rotate(45,fillcolor="blue")img_rotate.save("img_rotate.jpg")#设置图片大小,根据data信息截取图像区域img_transform=img.transform((640,480),Image.Transform.EXTENT,data=[0,0,img.width//2,img.height//2])img_transform.save("img_transform.jpg")5.5图像几何变换方法05PIL库5.1PIL库概述5.2图像格式转换方法5.3图像缩放方法5.4图像分离与融合方法5.5图像几何变换方法5.6图像过滤和增强方法目录第81页方法表示描述ImageFilter.BLUR图像的模糊效果ImageFilter.CONTOUR图像的轮廓效果ImageFilter.DETAIL图像的细节效果ImageFilter.EDGE_ENHANCE图像的边界加强效果ImageFilter.EDGE_ENHANCE_MORE图像的阈值边界加强效果ImageFilter.EMBOSS图像的浮雕效果ImageFilter.FIND_EDGES图像的边界效果ImageFilter.SMOOTH图像的平滑效果ImageFilter.SMOOTH_MORE图像的阈值平滑效果ImageFilter.SHARPEN图像的锐化效果PIL库ImageFilter类-图像过滤方法5.6图像过滤和增强方法ImageEnhance类提供了高级的图像增强需求,它提供调整色彩度、亮度、对比度、锐化等功能。方法描述ImageEnhance.enhance(factor)对选择属性的数值增强factor倍ImageEnhance.Color(im)调整图像的颜色平衡ImageEnhance.Contrast(im)调整图像的对比度ImageEnhance.Brightness(im)调整图像的亮度ImageEnhance.Sharpness(im)调整图像的锐化PIL库ImageEnhance类-图像增强方法5.6图像过滤和增强方法#实例6.31pil9.py图像过滤和增强fromPILimportImagefromPILimportImageFilterfromPILimportImageEnhanceimg=Image.open("pic1.jpg")#对图像进行二值化处理提取部分车道线thresh=200func=lambdax:255ifx>threshelse0img_b=img.convert("L").point(func,mode="1")img_b.save("img_b.jpg")#获取图像轮廓img_contour=img.filter(ImageFilter.CONTOUR)img_contour.save("img_contour.jpg")#调整图像对比度img_contrast=ImageEnhance.Contrast(img)img_contrast.enhance(3).save("img_contrast.jpg")5.6图像过滤和增强方法目录第85页010203文件

OS库zipfile库040506数据的格式化和处理PIL库OpenCV库OpenCV(OpenSourceComputerVisionLibrary)库是Python语言的第三方库,需要通过pip工具安装。:\>pipinstallopencv-pythonOpenCV库实现了图像处理和计算机视觉方面的大量通用算法,可以说是计算机视觉研究领域最强大有力的工具;OpenCV库已经被应用于各种场景,例如图像检测、图像识别、对运动图像进行分类、图像物体跟踪等;OpenCV库的官方网站为/6.OpenCV库6.OpenCV库方法作用参数cv2.imread(filepath,flags)读入图像Filepath:图像存储路径Flags:读入图像的标志,如cv2.IMREAD_GRAYSCALE表示读入灰度图cv2.imshow(wname,image)显示图像Wname:显示图像的窗口名称Image:要显示的图像,窗口大小自动调整为图片大小cv2.imwrite(file,image,num)保存图像File:要保存的文件名Iamge:要保存的图像Num:压缩级别,默认为3OpenCV库常用方法OpenCV库常用方法6.OpenCV库方法作用参数cv2.resize(image,image2,size)缩放图像Image:输入原图Image2:输出图像Size:输出图像大小cv2.flip(image,flipcode)翻转图像Image:输入图像Flipcode:=0沿x轴翻转>0沿y轴翻转<0沿x,y轴同时翻转cv2.warpAffine(image,M,size)图像仿射变换Image:输入图像变换矩阵:M平移、M_crop裁剪、M_shear剪切、M_rotate旋转Size:元组类型数据,表示输出图像大小OpenCV库常用方法6.OpenCV库方法作用参数cv2.putText(image,text,local,cv2.FONT_HERSHEY_PLAIN,1,(255,0,0),1)添加文字至图像(图像,添加的文字,相较左上角坐标,字体,字体大小,颜色,字体粗细)cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)画矩形框至图像(图像,矩形框左上角坐标,矩形框右下角坐标,矩形框颜色,矩形框粗细)cv2.boundingRect(image)返回图像四值属性Image:输入图像返回x,y,w,h,分别为图像左上角坐标和图像宽、高6.OpenCV库6.32opencv1.py#实例6.32opencv1.pyOpenCV图像处理importcv2importnumpyasnpimg=cv2.imread("pic1.jpg")#沿x、y轴翻转图片img_flip=cv2.flip(img,flipCode=-1)cv2.imwrite("img_flip.jpg",img_flip)#缩放、平移图片,沿x、y方向缩小至0.5倍,沿x、y方向平移10像素M=np.float32([[0.5,0,10],[0,0.5,10]])img_warp=cv2.warpAffine(img,M,(640,480))cv2.imwrite("img_warp.jpg",img_warp)#画矩形框框出地标cv2.rectangle(img,(290,70),(350,100),(0,255,0),2)#在矩形框旁标注"camp"cv2.putText(img,"camp",(250,70),cv2.FONT_HERSHEY_PLAIN,1,(255,0,0),1)cv2.imwrite("img_rec.jpg",img)色彩空间6.OpenCV库BGR色彩空间是基于三基色(红,绿,蓝)

而言的,像素数组内每个数据的值都在[0,255]内。色彩空间是为了描述不同频率的光而建立出的色彩模型,不同色彩空间其颜色通道的表示方式也有所不同。BGR色彩空间即灰度图像的色彩空间。像素数组中,可以是从0到255的256个数字,每个数值表示从黑变白的颜色深浅程度。0表示纯黑色,255表示纯白色,数值越大越趋于白色。GRAY色彩空间色彩空间6.OpenCV库HSV颜色空间是面向视觉感知模型提出的。色彩空间是为了描述不同频率的光而建立出的色彩模型,不同色彩空间其颜色通道的表示方式也有所不同。HSV色彩空间含义描述范围H色调指光的颜色[0,180] 红色:0, 黄色:30, 绿色:60, 蓝色:120S饱和度指色彩的深浅[0,255] 饱和度为0时变为灰度图像。V亮度指光的明暗[0,255] 亮度为0时,图像为纯黑色。亮度越大,图像越亮。OpenCV色彩空间转换方法6.OpenCV库cv2.cvtColor(src,code[,dst[,dstCn]])

src:待转换的原始图像code:目标转换颜色空间代码dst:可选参数,转换结果存储图像dstCn:可选参数,转换结果的通道数code值作用cv2.COLOR_BGR2BGRA为BGR或RGB图像添加alpha通道cv2.COLOR_RGB2RGBAcv2.COLOR_BGR2GRAY在RGB/BGR图像与灰度图之间转换cv2.COLOR_RGB2GRAYcv2.COLOR_GRAY2BGRcv2.COLOR_GRAY2RGBcv2.COLOR_BGR2HSV在RGB/BGR图像与HSV图像之间转换cv2.COLOR_RGB2HSVcv2.COLOR_HSV2BGRcv2.COLOR_HSV2RGB实例6.33opencv2.py本章总结掌握文件的打开、关闭、读写的操作方法;掌握一维数据、二维数据、高维数据表示和操作方法,能读写和处理文件;了解并能使用OS库、zipfile库;了解并能使用json库、PIL库、openCV库。第七章Python计算生态及机器学习概述Python深度学习及智能车竞赛实践目录第96页010203计算思维的概念

Python计算生态Python数据分析库0405机器学习方法概述一元线性回归理论及实践目录第97页010203计算思维的概念

Python计算生态Python数据分析库0405机器学习方法概述一元线性回归理论及实践实证思维:

实验和验证,物理为代表,

引力波→实验;逻辑思维:推理和演绎为特征的,数学为代表,

A→B,B→C,A→C;计算思维:设计和构造,计算机为代表,

求阶乘、科赫曲线。1.计算思维的概念人类在认识世界、改造世界过程中表现出三种基本的思维特征计算思维是计算机科学发展到一定程度而提出的,它是人类逐渐意识到计算机解决问题的强大能力后而自然产生的思维模式,具有显著的时代特性。在程序设计范畴,计算思维主要反映在抽象实际问题的计算特性、将计算特性抽象为计算问题、通过程序设计语言实现问题的自动求解等。1.计算思维的概念计算思维的本质是抽象和自动化:抽象问题的计算过程,

利用计算机自动化求解;程序设计是实践计算思维的重要手段;1.计算思维的概念1.计算思维的概念计算思维基于计算机强大的算力及海量数据抽象计算过程。1.计算思维的概念计算思维基于计算机强大的算力及海量数据抽象计算过程。1.计算思维的概念计算思维基于计算机强大的算力及海量数据抽象计算过程。车、路、云一体化的智慧交通目录第104页010203计算思维的概念

Python计算生态Python数据分析库0405机器学习方法概述一元线性回归理论及实践2.Python计算生态Python语言从诞生之初致力于开源开放,近20年的开源运动产生了深植于各信息技术领域的大量可重用资源,直接且有力的支撑了信息技术超越其他技术领域的发展速度,形成了“计算生态”,建立了全球最大的编程计算生态。2.Python计算生态以开源项目为代表的大量第三方库(超15万个第三方库)库的建设经过野蛮生长和自然选择,

同一个功能,Python语言2个以上第三方库。在计算生态思想指导下,编写程序的起点不再是探究每个具体算法的逻辑功能和设计,而是尽可能利用第三方库进行代码复用,探究运用库的系统方法,实现了模块设计。随Python安装包一起发布,用户可以随时使用,被称为Python标准库,受限于Python安装包的设定大小,标准库数量270个左右。Python常用标准库:turtle库、math库、time库、random库、JSON库、OS库、在zipfile库、Tkinter库……Python标准库2.Python计算生态Python有非常简单灵活的编程方式,采用C、C++等语言编写的专业库可以经过简单的接口封装供Python语言程序调用。这样的粘性功能使得Python语言成为了各类编程语言之间的接口,俗称Python语言为“胶水语言”。Python的粘接功能2.Python计算生态Python有非常丰富的第三方库。这些第三方库由全球各行业专家、工程师和爱好者开发,没有顶层设计,由开发者采用“尽力而为”的方式维护;Python第三方程序包括库(library)、模块(module)、类(class)和程序包(Package)等多种命名,这些可重用代码统称为“库”。Python第三方库2.Python计算生态Python官方网站提供了第三方库索引功能

/pypi列出了Python语言超过15万个第三方库的基本信息,这些函数库覆盖信息领域技术所有技术方向。Python第三方库2.Python计算生态Python第三方库需要安装后才能使用,第三方库依照安装方式灵活性和难易程度有三种方法:

1.pip工具安装

2.自定义安装

3.文件安装pip是Python官方提供并维护的在线第三方库安装工具,pip工具安装是最常用且最高效的Python第三方库安装方式。

pip工具安装2.Python计算生态pipinstall<拟安装库名>:\>pipinstallPyInstaller#或者:\>pip3installPyInstallerpip是Python第三方库最主要的安装方式,可以安装超过90%以上的第三方库。然而,还有一些第三方库无法暂时用pip安装,此时,需要其他的安装方法。pip工具与操作系统也有关系,在MacOSX和Linux等操作系统中,pip工具几乎可以安装任何Python第三方库,在Windows操作系统中,有一些第三方库仍然需要用其他方式尝试安装。

pip工具安装2.Python计算生态pip是Python内置命令,需要通过命令行执行,如执行pip-h命令将列出pip常用的子命令::\>pip-hpip使用2.Python计算生态pip支持安装(install)、下载(download)、卸载(uninstall)、列表(list)、查看(list)、查找(search)等一系列安装和维护子命令。如list子命令列出当前系统中已经安装的第三方库,格式如下:

:\>piplist

pip使用2.Python计算生态更新pip本身的方法:

pip的更新2.Python计算生态C:\Users\Administrator>python.exe-mpipinstall--upgradepipRequirementalreadysatisfied:pipinc:\users\administrator\appdata\local\programs\python\python39\lib\site-packages(22.2.2)CollectingpipUsingcachedpip-23.3.2-py3-none-any.whl(2.1MB)Installingcollectedpackages:pipAttemptinguninstall:pipFoundexistinginstallation:pip22.2.2Uninstallingpip-22.2.2:Successfullyuninstalledpip-22.2.2Successfullyinstalledpip-23.3.2卸载一个库的命令格式如下:

pipuninstall<拟卸载库名>

pip的子命令2.Python计算生态download子命令可以下载第三方库的安装包,但并不安装,格式如下:

pipdownload

<拟卸载库名>

pip的子命令2.Python计算生态search子命令可以链接搜索库名或摘要中关键字,格式如下:

pipsearch<拟查询库名或关键字>

pip的子命令2.Python计算生态show子命令列出某个已经安装库的详细信息,格式如下:

pipshow<拟查询库名或关键字>

常用的第三方库和及其安装指令需要注意,库名是第三方库常用的名字,pip安装用的名字和库名不一定完全相同,建议采用小写字符。2.Python计算生态常用的第三方库和及其安装指令需要注意,库名是第三方库常用的名字,pip安装用的名字和库名不一定完全相同,建议采用小写字符。2.Python计算生态需要注意,安装需在系统命令行下进行,不要在IDLE中,部分库会依赖其他函数库,会自动安装,部分库下载后需要一个安装过程,pip会自动执行。成功安装库后会出现”Successfullyinstalled…“提示。常用的第三方库和及其安装指令2.Python计算生态可以使用

OS标准库

的system()函数调用控制台importoslibs={"numpy","matplotlib","pillow","sklearn","requests",\"jieba","beautifulsoup4","wheel","networkx","sympy",\"pyinstaller","django","flask","werobot","pyqt5",\"pandas","pyopengl","pypdf2","docopt","pygame"}try:forlibinlibs:

os.system("pipinstall"+lib)print("Successful")except:print("FailedSomehow")pip批量安装Python库2.Python计算生态目录第123页010203计算思维的概念

Python计算生态Python数据分析库0405机器学习方法概述一元线性回归理论及实践numpy库numpy(NumericalPython的简称)是高性能科学计算和数据分析的基础包,其部分功能如下:ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组;用于对整组数据进行快速运算的标准数学函数(无需编写循环);用于读写磁盘数据的工具以及用于操作内存映射文件的工具;线性代数、随机数生成以及傅里叶变换功能。NumPy官方的英文文档:/NumPy官方的中文文档:/3.Python数据分析库pandas是python第三方库,提供高性能易用数据类型和分析工具pandas基于numpy实现,常与numpy和matplotlib一同使用两大核心数据结构:Series(一维数据)

和DataFrame(多特征数据,既有行索引,又有列索引)Pandas官方的英文文档:https:///PandasPandas官方的中文文档:/pandas库3.Python数据分析库Matplotlib库3.Python数据分析库Matplotlib是一个Python2D绘图库,通过调用库的方法,只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等。Matplotlib库英文网:

/stable/gallery/index.htmlMatplotlib库中文网:

/intro/目录第127页010203计算思维的概念

Python计算生态Python数据分析库0405机器学习方法概述一元线性回归理论及实践Machine

learningisthestudyofalgorithmsandmathematicalmodelsthatcomputersystemsusetoprogressivelyimprovetheirperformanceonaspecifictask.Machinelearningalgorithmsbuildamathematicalmodelofsampledata,knownas“trainingdata”,inordertomakepredictionsordecisionswithoutbeingexplicitlyprogrammedtoperformthetask.Wikipedia线性回归支持向量机K-means高斯混合聚类密度聚类逻辑回归分类决策树贝叶斯集成学习回归问题聚类问题分类问题岭回归Lasso回归层次聚类回归决策树深度学习方法可以解决分类问题,也可以解决回归问题4.机器学习方法概述有监督学习(supervisedlearning):从给定的有标注的训练数据集中学习出一个函数,当新的数据到来时可以根据这个函数预测结果。常见任务包括分类与回归。分类:输出是类别标签回归:电动车剩余里程估计值是连续值4.机器学习方法概述无监督学习(unsupervisedlearning):没有标注的训练数据集,需要根据样本间的统计规律对样本集进行分析,常见任务如聚类等。4.机器学习方法概述聚类问题是无监督学习的问题,算法的思想就是“物以类聚,人以群分”。聚类算法感知样本间的相似度,进行类别归纳,对新的输入进行输出预测,输出变量取有限个离散值。可以作为一个单独过程,用于寻找数据内在的分布结构可以作为分类、稀疏表示等其他学习任务的前驱过程4.机器学习方法概述分类问题是监督学习的一个核心问题,它从数据中学习一个分类决策函数或分类模型(分类器(classifier)),对新的输入进行输出预测,输出变量取有限个离散值。分类在我们日常生活中很常见二分类问题多分类问题垃圾邮件正常邮件轿车摩托车货车4.机器学习方法概述分类模型性能评价指标

准确率(Accuracy)是指在分类中,分类正确的记录个数占总记录个数的比值。通常,准确率高时,召回率偏低;召回率高时,准确率偏低。1.地震的预测对于地震的预测,我们希望的是召回率非常高,也就是说每次地震我们都希望预测出来。2.嫌疑人定罪基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的,即使有时候放过了一些罪犯(召回率低),但也是值得的。

召回率(Recall)也叫查全率,是指在分类中样本中的正例有多少被预测正确了。4.机器学习方法概述举例:一个城市路网中有1400辆小轿车,300辆公交巴士,700辆自行车,现在以路网摄像头抓拍到小轿车为目的,共拍到了1200辆小轿车,300辆公交巴士,500辆自行车,那么,这些指标分别如下:正确率(Precision)

召回率(Recall)

F值=

2*60%

*

85.7%

/

(60%

+

85.7%)

=

70.6%=

1200

/

(1200

+

300

+

500)

=

60%=

1200

/

1400

=

85.7%4.机器学习方法概述=1400

/

(1400

+300

+

700)=

58.3%正确率(Precision)

召回率(Recall)

F值=

1400

/

1400

=

100%=

2*58.3%

*100%

/

(58.3%

+

100%)

=

73.7%一个城市路网中有1400辆小轿车,300辆公交巴士,700辆自行车,现在以路网摄像头抓拍到小轿车为目的,假设所有的小轿车、公交巴士和自行车都抓拍到了,那么,这些指标分别如下:举例:4.机器学习方法概述回归分析用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别是当输入变量的值发生变化时,输出变量值随之发生变化。回归分析自变量个数自变量与因变量关系因变量个数一元回归分析多元回归分析线性回归分析非线性回归分析简单回归分析多重回归分析4.机器学习方法概述Sklearn全称为scikit-learn,其中封装了大量的机器学习算法,包括分类,回归,降维和聚类四大机器学习算法。还包括了特征提取,数据处理和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论