计算机视觉中Python如何实现图像操作与处理

简介: 学习过flask动画制作或者视频编辑的童鞋应该都知道,我们平时所看到的流畅的视频画面都是由一帧一帧的图像构成的,比如我们以前读书的时候喜欢在书的边角处花一些动作不同的简笔画,当我们快速翻动书本的时候就好像我们的简笔画中的物体活了,就像在看动画一般.所以当我们需要对一个视频文件进行分析时,连续播放的视频并没有那么容易进行采样分析,在计算机视觉中对视频的分析通常都是对视频帧的分析.说白了,其实计算机视觉就是一们研究如何对图像中的信息进行自动提取的学科.所以学习计算机视觉首先需要学会如何对图像进行处理,那在Python中我们都怎么处理图像的呢?在Python中处理图像的库有很多,非常丰富,Pyt

前言


学习过flask动画制作或者视频编辑的童鞋应该都知道,我们平时所看到的流畅的视频画面都是由一帧一帧的图像构成的,比如我们以前读书的时候喜欢在书的边角处花一些动作不同的简笔画,当我们快速翻动书本的时候就好像我们的简笔画中的物体活了,就像在看动画一般.所以当我们需要对一个视频文件进行分析时,连续播放的视频并没有那么容易进行采样分析,在计算机视觉中对视频的分析通常都是对视频帧的分析.说白了,其实计算机视觉就是一们研究如何对图像中的信息进行自动提取的学科.

所以学习计算机视觉首先需要学会如何对图像进行处理,那在Python中我们都怎么处理图像的呢?

在Python中处理图像的库有很多,非常丰富,Python的火热也正是得益于此,得益于社区的完善和活跃.这里我们选择常用的PIL图像处理库,它提供了我们通常使用的各种图像处理功能,比如:裁剪,旋转,缩放,颜色转换,模糊等等.其实PIL官方版本是以Python2.X的版本发行的,并没有针对Python3.X的PIL版本,我们在Python3中使用的Pillow库.是一群社区的志愿者在PIL的基础上建立的兼容版本,而且还在原来的基础上增加了其他新的功能.


准备


我们处理图像一般用到的库如下:

pillow,numpy,matplotlib等

安装这些库很简单,这里推荐使用anaconda集成管理工具来进行安装相关的库,anaconda中包含了多个常用于科学计算的库,如果使用命令安装可使用如下命令:


pip3 install pillow
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你的pip不是最新版本的可使用以下命令更新升级,以免造成安装失败

python -m pip install --upgrade pip

接下来我们小试牛刀,看看PIL是如何处理图像的


浅尝图像处理


我们先从找一张测试用的图:


网络异常,图片无法展示
|


fromPILimportImageimportmatplotlib.pylabaspltimg1=Image.open('t1.jpg') #打开图像img2=img1.convert('L') #将图像转化成灰度图img2.resize((128,128)) #调整图片大小plt.subplot(2,1,1)
plt.imshow(img1)
plt.subplot(2,1,2)
plt.imshow(img2)
plt.show()


执行结果:


网络异常,图片无法展示
|


这个程序我们使用PIL库结合matplotlib库对图像进行灰度转换,并在将其绘制到坐标上

PIL库中比较重要的模块就是Image,它包含了图像的读取,保存等函数,比如我们以上的代码中.open(),顾名思议.就是打开图像,就跟文件处理.我们想要操作文件,修改文件的内容首先是打开并读取到文件原有的内容,能进行后续的处理.接着使用convert()函数将图像转换成灰度图,因为在很多时候,图像本身的颜色会对我们要分析的信息造成干扰,而灰度图可以帮助我们更好地分析问题.接着我们使用matplotlib中subplot将多张图绘制到用户界面.


绘制图像的直方图


很多时候我们对一个图像进行分析的时候,图像的像素通常是一个很好的着手点.而图像的直方图则可以比较直观地展示图像的像素分布.通过绘制图像的直方图,可以进行图像检索,图像分割,图像分类......图像的直方图和数学中的直方图类似,将像素值范围划分成一定数目的小区间,每个小区间内就是落在该区间表示范围内的像素数目,用这种形式来呈现图像颜色的分布情况.


我们还是使用上面例子那种图:


fromPILimportImagefrompylabimport*importnumpyasnpimg1=np.array(Image.open('t1.jpg').convert('L'))
figure()
hist(img1.flatten(),128)
show()


执行结果:

网络异常,图片无法展示
|


这里使用numpy的array()函数将图像转化为一个数组对象,用三元组表示像素点(行,列,颜色通道),直方图绘制使用hits()函数.函数的第一参数是输入的图像,第二个参数指定划分的小区间的数目.hits()函数只能输入一维数组.所以需要对输入的图像做一些转换.这里我们用到了flatten()函数先将数组按照行优先原则转化成一维数组,再利用hits()绘制图像.


总结


本文我们了解到图像分析的基本流程和图像处理相关的库以及库的操作.计算机视觉中对与图像的操作远不止如此,本文只是浅尝辄止,比如常用的还有旋转,去噪,模糊,扭曲等等,在普通的验证的识别中,经常需要对验证码图片进行去噪处理,排除图像中无关的干扰素,让识别结果更加准确.除此之外,我们还可以结合更多其它的图像处理库,做出更好玩的东西.比如我之前写的使用opencv进行人的脸检测和识别

目录
相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
43 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
5月前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
163 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
2月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
220 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1月前
|
机器学习/深度学习 算法 数据可视化
Python的计算机视觉与图像处理
本文介绍了Python在计算机视觉和图像处理领域的应用,涵盖核心概念、算法原理、最佳实践及应用场景。重点讲解了OpenCV、NumPy、Pillow和Matplotlib等工具的使用,并通过代码实例展示了图像读写、处理和可视化的方法。实际应用包括自动驾驶、人脸识别、物体检测等。未来趋势涉及深度学习、边缘计算和量子计算,同时也讨论了数据不足、模型解释性和计算资源等挑战。
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
88 3
|
4月前
|
存储 JSON API
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
156 7
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
|
5月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
180 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
5月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
163 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
4月前
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
100 0
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
5月前
|
机器学习/深度学习 编解码 自动驾驶
计算机视觉之图像到图像的翻译
图像到图像的翻译(Image-to-Image Translation)是指将一种图像从一种表示转换为另一种表示的过程。该任务的目标是在保证图像语义信息的前提下,将图像风格、颜色或其他视觉特征进行转换。该技术在计算机视觉领域具有广泛应用,例如图像风格迁移、图像修复、图像增强、超分辨率、语义分割等。
117 4

热门文章

最新文章