常用的十大python图像处理工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的十大python图像处理工具相关的知识,希望对你有一定的参考价值。
原文标题:10 Python image manipulation tools 作者 | Parul Pandey 翻译 | 安其罗乔尔、JimmyHua 今天,在我们的世界里充满
原文标题:10 Python image manipulation tools.作者 | Parul Pandey
翻译 | 安其罗乔尔、JimmyHua
今天,在我们的世界里充满了数据,图像成为构成这些数据的重要组成部分。但无论是用于何种用途,这些图像都需要进行处理。图像处理就是分析和处理数字图像的过程,主要旨在提高其质量或从中提取一些信息,然后可以将其用于某种用途。
图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python成为这种图像处理任务是一个恰当选择,这是因为它作为一种科学编程语言正在日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具供大家使用。
让我们看一下可以用于图像处理任务中的常用 Python 库有哪些吧。
1.scikit-image
scikit-image是一个开源的Python包,适用于numpy数组。它实现了用于研究,教育和工业应用的算法和实用工具。即使是那些刚接触Python生态系统的人,它也是一个相当简单直接的库。此代码是由活跃的志愿者社区编写的,具有高质量和同行评审的性质。
资源
文档里记录了丰富的例子和实际用例,阅读下面的文档:
http://scikit-image.org/docs/stable/user_guide.html
用法
该包作为skimage导入,大多数功能都在子模块中找的到。下面列举一些skimage的例子:
图像过滤
使用match_template函数进行模板匹配
你可以通过此处查看图库找到更多示例。
2. Numpy
Numpy是Python编程的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准Numpy数组。因此,我们可以通过使用基本的NumPy操作,例如切片、掩膜和花式索引,来修改图像的像素值。可以使用skimage加载图像并使用matplotlib显示图像。
资源
Numpy的官方文档页面提供了完整的资源和文档列表:
http://www.numpy.org/
用法
使用Numpy来掩膜图像.
3.Scipy
scipy是Python的另一个类似Numpy的核心科学模块,可用于基本的图像操作和处理任务。特别是子模块scipy.ndimage,提供了在n维NumPy数组上操作的函数。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数。
资源
有关scipy.ndimage包提供的完整功能列表,请参阅下面的链接:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
用法
使用SciPy通过高斯滤波器进行模糊:
4. PIL/ Pillow
PIL( Python图像库 )是Python编程语言的一个免费库,它支持打开、操作和保存许多不同的文件格式的图像。然而, 随着2009年的最后一次发布,它的开发停滞不前。但幸运的是还有有Pillow,一个PIL积极开发的且更容易安装的分支,它能运行在所有主要的操作系统,并支持Python3。这个库包含了基本的图像处理功能,包括点运算、使用一组内置卷积核的滤波和色彩空间的转换。
资源
文档中有安装说明,以及涵盖库的每个模块的示例:
https://pillow.readthedocs.io/en/3.1.x/index.html
用法
在 Pillow 中使用 ImageFilter 增强图像:
5. OpenCV-Python
OpenCV( 开源计算机视觉库 )是计算机视觉应用中应用最广泛的库之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的优点不只有高效,这源于它的内部组成是用C/C++编写的,而且它还容易编写和部署(因为前端是用Python包装的)。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。
资源
OpenCV-Python-Guide指南可以让你使用OpenCV-Python更容易:
https://github.com/abidrahmank/OpenCV2-Python-Tutorials
用法
下面是一个例子,展示了OpenCV-Python使用金字塔方法创建一个名为“Orapple”的新水果图像融合的功能。
6. SimpleCV
SimpleCV 也是一个用于构建计算机视觉应用程序的开源框架。有了它,你就可以访问几个高性能的计算机视觉库,如OpenCV,而且不需要先学习了解位深度、文件格式、颜色空间等。
它的学习曲线大大小于OpenCV,正如它们的口号所说“计算机视觉变得简单”。一些支持SimpleCV的观点有:
即使是初学者也可以编写简单的机器视觉测试摄像机、视频文件、图像和视频流都是可互操作的资源
官方文档非常容易理解,而且有大量的例子和使用案例去学习:
https://simplecv.readthedocs.io/en/latest/
用法
7. Mahotas
Mahotas 是另一个计算机视觉和图像处理的Python库。它包括了传统的图像处理功能例如滤波和形态学操作以及更现代的计算机视觉功能用于特征计算,包括兴趣点检测和局部描述符。该接口是Python语言,适合于快速开发,但是算法是用C语言实现的,并根据速度进行了调优。Mahotas库速度快,代码简洁,甚至具有最小的依赖性。通过原文阅读它们的官方论文以获得更多的了解。
资源
文档包括安装指导,例子,以及一些教程,可以更好的帮助你开始使用mahotas。
https://mahotas.readthedocs.io/en/latest/install.html
用法
Mahotas库依赖于使用简单的代码来完成任务。关于‘Finding Wally’的问题,Mahotas做的很好并且代码量很少。下面是源码:
https://mahotas.readthedocs.io/en/latest/wally.html
8. SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具 。其中, SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育、解释语言中的应用。SimpleITK 是一个图像分析工具包,包含大量支持一般过滤操作、图像分割和匹配的组件。SimpleITK本身是用C++写的,但是对于包括Python以内的大部分编程语言都是可用的。
资源
大量的Jupyter Notebooks 表明了SimpleITK在教育和研究领域已经被使用。Notebook展示了用Python和R编程语言使用SimpleITK来进行交互式图像分析。
http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/
用法
下面的动画是用SimpleITK和Python创建的刚性CT/MR匹配过程的可视化 。点击此处可查看源码!
9. pgmagick
pgmagick是GraphicsMagick库的一个基于python的包装。 GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀。它提供了一个具有强大且高效的工具和库集合,支持以88种主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和操作图像。
资源
有一个专门用于PgMagick的Github库 ,其中包含安装和需求说明。还有关于这个的一个详细的用户指导:
https://github.com/hhatto/pgmagick
用法
使用pgmagick可以进行的图像处理活动很少,比如:
图像缩放
边缘提取
10. Pycairo
Pycairo是图像处理库cairo的一组Python捆绑。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,因为它们在调整大小或转换时不会失去清晰度 。Pycairo是cairo的一组绑定,可用于从Python调用cairo命令。
资源
Pycairo的GitHub库是一个很好的资源,有关于安装和使用的详细说明。还有一个入门指南,其中有一个关于Pycairo的简短教程。
库:https://github.com/pygobject/pycairo指南:https://pycairo.readthedocs.io/en/latest/tutorial.html用法
使用Pycairo绘制线条、基本形状和径向梯度:
总结
有一些有用且免费的Python图像处理库可以使用,有的是众所周知的,有的可能对你来说是新的,试着多去了解它们。 参考技术A scikit Image:是一个基于numpy数组的开源Python包,实现了用于研究、教育的算法和应用程序,对于小白十分友好,相对简单,其代码质量非常高,已过同行评审。
Numpy:是Python编程的核心库之一,支持数组结构,通过使用基本的Numpy操作,如切片、脱敏和花式索引,可以修改图像的像素值,可以使用skimage加载图像。
Scipy: 是 Python 的另一个核心科学模块,就像 Numpy 一样,可用于基本的图像处理和处理任务。 该软件包目前包括线性和非线性滤波、二进制形态、B 样条插值和对象测量等功能。
Pillow/PIL: 是一个免费的 Python 编程语言库,它增加了对打开、处理和保存许多不同图像文件格式的支持。该库包含基本的图像处理功能,包括点操作、使用一组内置卷积内核进行过滤以及颜色空间转换。
OpcenCV-Python: 是计算机视觉应用中使用最广泛的库之一 ,不仅速度快,也易于编码和部署,这使其成为执行计算密集型计算机视觉程序的绝佳选择。
SimpleCV:用于构建计算机视觉应用程序的开源框架。通过它可以访问如 OpenCV 等高性能的计算机视觉库,而无需首先了解位深度、文件格式或色彩空间等,学习难度远远小于 OpenCV。
黑客十大常用工具
黑客技术一度被认为是一个神秘的特有领域,随着技术的进步和领域环境的进步,它已经成为一种非常普遍的现象。黑客技术可以用于有害目的,也可以用于发现系统中的漏洞,并通知系统属主,帮助他们更好地保护系统。
借助于一些工具及其基本知识,黑客可以更高效地执行安全测试,这对他们的任务有很大帮助。以下介绍黑客十大常用工具。
1. Nmap
Nmap(Network Mapper)是一款非常著名的、用来扫描端口和绘制网络的、开源免费的黑客工具,它是一个基于控制台的工具,另外方便使用,还有一个带有GUI的版本Zenmap。Nmap被世界各地的安全专业人员用于绘制网络空间,检查开放的端口,管理服务的升级计划,监控主机或服务的正常运行时间。
nmap主要用于网络发现和执行安全审计。它使用原始IP数据包以创造性的方式来确定哪些主机在网络上可用,收集主机提供了哪些服务及其相关信息(应用程序名称和版本),使用的是什么操作系统,目标主机的过滤器/防火墙允许什么类型、什么版本的数据包穿过。
2. Metasploit
Metasploit是一个漏洞利用工具,可以用来执行各种各样的任务,它是网络安全专业人员和白帽黑客必不可少的工具。同时它是最著名的一个开源框架,可用于开发和执行针对远程目标机器的POC的工具。Metasploit本质上是为用户提供关于已知的安全漏洞的关键信息,帮助制定渗透测试、系统测试计划、漏洞利用的策略和方法。
3. John the Ripper
John the Ripper是一个受欢迎的密码破解渗透测试工具,最常用于进行字典攻击。John the Ripper以文本字符串的样本(也称为“字典表”,包括常用和复杂的组合密码)为基础,并以与待破解密码同样的方式(包括加密算法和密钥)进行加密,并输出加密字符串,与真正密码进行比较。该工具还可以用于对字典库进行各种变形。
另一个和John the Ripper类似的工具是THC Hydra(九头蛇)。John the Ripper和THC之间唯一的区别是,John the Ripper是一个离线的密码破解器,而九头蛇是一个“在线”的破解工具。
4. THC Hydra
THC Hydra是一个非常受欢迎的密码破解工具,并且有一个非常活跃和经验丰富的开发团队在维护,支持Windows,Linux,Free BSD,Solaris和OS X等操作系统。THC Hydra是一个快速稳定的网络登录攻击工具,它将使用字典或暴力攻击来尝试针对登录页面的各种密码和登录组合。当你需要强力破解远程认证服务时,THC Hydra常常是个不二选择工具。它可以对超过50个协议执行高效的字典攻击,包括telnet、FTP、HTTP、HTTPS、SMB、多种类型的数据库,等等。您可以轻松添加模块到该工具中,以此增强功能。
5. OWASP Zed
OWASP Zed代理攻击(简称:ZAP)是一个非常流行的Web应用程序渗透测试工具,用于发现应用漏洞。它既可以被具有丰富经验的安全专家所用,同时对于开发人员和功能测试人员来说也是非常理想的测试工具箱。
ZAP是一个流行的工具,因为它也有很多的支持者,并且OWASP社区也是一个为那些网络安全工作人员提供优秀资源的社区。ZAP提供自动扫描器以及其他各种工具,用于发现安全漏洞。理解和精通这个工具有利于你在渗透测试领域的职业生涯提升。
6. Wireshark
Wireshark是一个非常流行的网络协议分析器工具,它可以用于检查办公网络或家庭网络中的各种东西。您可以实时捕获数据包并分析数据包以找到与网络相关的各种信息。该工具支持Windows,Linux,OS X,Solaris,FreeBSD和其他平台。
Wireshark已经高度发达,它包括过滤器,彩色标注等细节功能,让用户深入了解网络流量和检查每个数据包。如果你想成为一个渗透测试相关工作或者作为一个网络安全从业者,学习如何使用Wireshark是必不可缺的。
7. Aircrack-ng
Aircrack-ng是一个无线攻击工具,其之所有上榜是因为它具有强有力的无线网络密码的破解能力。这是一个用于802.11协议簇中WEP协议和WPA-PSK协议的密钥破解工具,它只要在监控模式下抓取足够的数据包,就可以恢复密钥。我们知道aircrack-ng提供标准的FMS攻击和优化了的Korek攻击,结合PTW攻击可使他们的攻击更有效。对于那些对无线攻击感兴趣的人来说,这是一个强烈推荐的工具。无线审计和渗透测试,学习Aircrack是必不可少的。
8. Maltego
Maltego是数字取证工具,为企业网络或局域网络提供一个整体的网络运行情况和网络威胁画像。Maltego核心功能是分析真实世界中可触及的公开互联网信息之间的关系,包括“踩点”互联网基础设施以及收集拥有这些设施的企业组织和个人信息。
Maltego提供一个范围广泛的图形化界面,通过聚合信息可即时准确地看到各个对象之间的关系,这使得我们可以看到隐藏的关联,即使它们是三重或四重的分离关系。
9. Cain and Abel
Cain&Abel是微软操作系统的密码复原工具,通过嗅探网络它可轻易地复原各种密码,使用字典、暴力、密码分析破解加密密码,记录VoIP通话记录,解码加密的密码,恢复无线网络密钥,发现缓存密码、分析路由协议。
开发Cain&Abel的本意,是希望它能对网络管理员、教师、安全顾问/专业人员、法医工作人员、安全软件供应商、专业渗透测试人员等提供帮助。
10. Nikto Website Vulnerability Scanner
Nikto是另一个经典的黑客工具,它是一个开源的(GPL)Web服务器扫描工具,综合扫描web服务器中的潜在危险的文件、CGI、版本检查、特定版本的问题、服务器配置项。被扫描项目和插件可以进行自动更新。
Nikto也可以检查服务器配置项,比如多索引文件的存在,HTTP服务选项,该工具还可标识已安装的Web服务器和Web应用程序。Nikto也算是半个IDS工具了,所以它是在进行白帽渗透测试或白盒渗透测试时是非常有用的。
黑客工具也不仅限于以上讨论的那些,不同个人或团队都有不同的偏好。然而,这些都是被专业人士推荐的最受欢迎的工具。而且,所有这些工具都被集成在用于渗透测试的Linux发行版,如Kali Linux或BackBox系统,因此大家都极力推荐你安装一个合适的、能够自动更新工具库的、集成众多黑客工具的Linux工具箱了http://www.lnluqu.cn/
http://www.025invest.cn/
http://www.wx-detian.cn/
http://www.xintravel.cn/
http://www.fenghuicaifu.cn/
http://www.chinaytbzw.cn/
http://www.sydire.cn/
http://www.jnymkj.cn/
http://www.metrel-china.cn/
http://www.hongheqiche.cn/
http://www.zazhiku.cn/
http://www.yz-hysl.cn/
http://www.gutiangelun.cn/
http://www.lnjjpm.cn/
http://www.touraround.cn/
---------------------
原文:https://blog.csdn.net/szgxingq/article/details/81172634
以上是关于常用的十大python图像处理工具的主要内容,如果未能解决你的问题,请参考以下文章