实验九:python包管理
安徽工程大学
Python程序设计 实验报告
班级 物流191 姓名 柳梦辉 学号 3190505126 成绩
日期 2020.6.15 指导老师 修宇
【实验目的】
进一步 了解python 的计算生态,python第3方包的安装方式
掌握采用pip 命令搜索、下载、安装卸载 python包的方法;
【实验条件】
PC机或者远程编程环境
【实验内容】
- 查阅资料进一步了解pip 安装命令的参数 运用相关命令查询本地计算机已经安装的包;
- 网络查询资料,了解图像处理的相关第三方库
- 选择一种库,下载但不安装文件
- 安装、卸载、安装图像处理的第三方库
- 采用pip安装图像处理库,实现ahpu.jpg图像的处理,实现反转,剪切,边缘提取,平滑等效果。
思考题:
1、在采用pip 下载或安装第方包时速度比较慢,你认为如何解决?
2、包安装完成后,如何确认该包是否安装成功?
实验内容:
1. 查阅资料进一步了解pip 安装命令的参数 运用相关命令查询本地计算机已经安装的包
pip是Python内置命令,需要通过命令行执行,执行pip -h命令将列出pip常用的子命令
pip命令详解
使用详解
1、pip安装软件
# pip install SomePackage
2、pip查看已安装的软件
# pip show --files SomePackage
3、pip检查哪些软件需要更新
# pip list --outdated
4、pip升级软件
# pip install --upgrade SomePackage
5、pip卸载软件
#pip uninstall SomePackage
6、本地安装
#pip install *.whl 直接在pip install命令后添加whl包的全路径名就能本地安装成功了
#下载需要的包,一般为zip、tar.gz等的压缩包,解压后,打开命令行,进入解压目录,使用python setup.py install命令安装。
pip --help
运用pip list 查询已安装包

2.网络查询资料,了解图像处理的相关第三方库
在进行数字图像处理时,我们经常需要对图像进行读取、保存、缩放、裁剪、旋转、颜色转换等基本操作。在使用python进行编程时,涉及到多个不同的图像处理库的选择,简单聊一聊这几个库:opencv、scikit-image、scipy、pillow、matplotlib等等(不包括深度学习:tf.image等)
1. PIL(Python Imaging Library)
PIL(Python Imaging Library)是Python常用的图像处理库,而Pillow是PIL的一个友好Fork,提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。相比opencv更为轻巧。Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如open、save、show等功能。
2. scipy.misc
python在科学计算领域有三个非常受欢迎库,numpy、SciPy、matplotlib。numpy是一个高性能的多维数组的计算库,SciPy是构建在numpy的基础之上的,它提供了许多的操作numpy的数组的函数。SciPy是一款方便、易于使用、专为科学和工程设计的python工具包,它包括了统计、优化、整合以及线性代数模块、傅里叶变换、信号和图像图例,常微分方差的求解等。
3. Opencv
OpenCV是一个开放源代码的计算机视觉应用平台,由英特尔公司下属研发中心俄罗斯团队发起该项目,开源BSD证书,OpenCV的目标是实现实时计算机视觉,,是一个跨平台的计算机视觉库。从开发之日起就得到了迅猛发展,获得了众多公司和业界大牛的鼎力支持与贡献,因为是BSD开源许可,因此可以免费应用在科研和商业应用领域。
OpenCV中已经包含如下应用领域功能:二维和三维特征工具箱、运动估算、人脸识别系统、姿势识别、人机交互、移动机器人、运动理解、对象鉴别、分割与识别、立体视觉、运动跟踪、增强现实(AR技术)。基于上述功能实现需要,OpenCV中还包括以下基于统计学机器学习库:Boosting算法、Decision Tree(决策树)学习、Gradient Boosting算法、EM算法(期望最大化)、KNN算法、朴素贝叶斯分类、人工神经网络、随机森林、支掌向量机。
编程语言:OpenCV中多数模块是基于C++实现,其中有少部分是基于C语言实现,当前OpenCV提供的SDK已经支持C++、Java、Python等语言应用开发。当前OpenCV本身新开发的算法和模块接口都是基于C++产生。OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。
注意:cv2默认为 BGR顺序,而其他软件(PIL、scopy.misc)一般使用RGB
4. matplotlib
Matplotlib是一个Python 2D绘图库,它可以在不同的平台上以各种硬拷贝格式和交互环境生成发布质量数据。Matplotlib可以用于Python脚本、Python和IPython shell、Jupyter notebook、web应用服务器和四个图形用户界面工具包。对于简单的绘图,pyplot模块提供了一个类似于matlab的接口,特别是与IPython结合使用时。对于power用户,您可以通过面向对象的界面或通过MATLAB用户熟悉的一组函数来完全控制线样式、字体属性、轴属性等.
5. skimage
scikit-image是一组用于图像处理和计算机视觉的算法。“skimage”的主要包只提供了一些用于转换图像数据类型的实用程序;大多数功能程序存在其子包中。读取功能包含在io模块中。使用建议
1. 这些库比较来看,我本人更喜欢使用opencv的库来进行图像处理的基本操作,数据格式为numpy,可以直接进行numpy的处理;2. 进行折线图这类图绘制的时候,一般使用matplotlib库。3. Opencv默认为 BGR顺序,而其他软件(PIL、scopy.misc)一般使用RGB。
其中最常用的是python第三方库-图像处理库pillow
python图像处理库pillow
安装
pip install pillow
使用
导入
from PIL import pillow
读取图像
picture = Image.open('test.jpg')
新建图像
picture = Image.new('RGB', (200, 200), 'red')
第一个参数是mode即颜色空间模式,第二个参数指定了图像的分辨率(宽x高),第三个参数是颜色。
-
-
也可以填入十六进制表示的颜色,如
#FF0000表示红色。 -
还能传入元组,比如(255, 0, 0, 255)或者(255, 0, 0)表示红色。
保存图像
picture.save('test.jpg')
图像坐标
(左, 顶, 右, 底)
常用属性:
# 文件名 print(image.filename)
# 文件格式 print(image.format)
# 文件模式 print(image.mode)
# 文件大小 print(image.size)
# 文件宽度 print(image.width)
# 文件高度 print(image.height)
# 文件信息 print(image.info)
常用方法:
# 剪切
croped_im = image.crop((0, 0, 200, 200))
croped_im.save('14.jpg')
# 复制
copy_im = croped_im.copy()
copy_im.save('13.jpg')
# 粘贴
croped_im = image.crop((0, 0, 300, 300))
croped_im.show()
image.paste(croped_im, (100, 100))
image.save('12.jpg')
# 调整大小
resized_im = image.resize((683, 728))
resized_im.show()
# 调整大小,(制造缩略图)
w, h = image.size
image.thumbnail((w//2, h//2))
image.show()
# 旋转图像
image = image.rotate(45)
image.show()
image = image.rotate(45, expand=100)
image.show()
# 翻转图像
image = image.transpose(Image.FLIP_LEFT_RIGHT)
image.show()
image = image.transpose(Image.FLIP_TOP_BOTTOM)
image.show()
# 获取图片通道名称
image = image.getbands()
print(image)
# 通过通道切割图片
R, G, B = image.split()
R.show()
G.show()
B.show()
print((R, G, B))
# 获取单个通道的图片
R = image.getchannel('R')
R.show()
# 模式转化
image = image.convert('L')
image.show()
# 获取单个像素值
image = image.getpixel((100,100))
print(image)
# 加载图片全部数据
pixdata = image.load()
pixdata[1,1] = 255, 255, 255
image.show()
print(pixdata)
print(pixdata[0,0])
print(type(pixdata[0,1]))
print([i for x in range(1) for y in range(1) for i in pixdata[x, y]])
# 获取所有像素内容
image = image.getdata()
image = image.getdata(band=0)
image = image.getdata(band=1)
image = image.getdata(band=2)
print(image)
print(list(image)[0])
# 关闭图片
image.show()
image.close()
3. 选择一种库,下载但不安装文件
采用pip download <库名> 只下载不安装。
这里下载matplotlib库

4. 安装、卸载、安装图像处理的第三方库
安装命令是:安装:pip install <库名>

卸载命令是:pip uninstall <库名>

5.采用pip安装图像处理库,实现ahpu.jpg图像的处理,实现反转,剪切,边缘提取,平滑等效果。
这里采用Pillow库进行处理
(1)显示原图

(2)反转

(3)剪切

(4)边界效果

(5)平滑

【思考题】
1、在采用pip 下载或安装第三方包时速度比较慢,你认为如何解决?
可以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率,以下是可以使用的几个资源:
国内源:
新版ubuntu要求使用https源,要注意。
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/
使用方法:
若临时使用:
可以在使用pip的时候在后面加上-i参数,指定pip源,例如:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
若要同时更新的话:
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
2、 包安装完成后,如何确认该包是否安装成功?
方法一:输入pip show +包名,如果安装成功则可看到第三方包的信息;
方法二:在程序中导入包,import包名,能够正常运行即安装成功;
方法三:直接输入pip list看第三方包是否存在。

浙公网安备 33010602011771号