整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

干货整理!10个Python图像处理工具,入门必看,

干货整理!10个Python图像处理工具,入门必看,提效大法 - 资源

作:Parul Pandey

铜灵 编译整理

量子位 出品 | 公众号 QbitAI

在图像处理领域,一库在手,相当于天下已有。

最近,有一位搞数据科学的小姐姐Parul Pandey,整理了一份实用Python图像处理工具,内含十大经典Python库。


这份资源中的工具可用于图像处理中的常见任务,包括裁剪、翻转、旋转、图像分割、分类和特征提取、图像恢复和图像识别等。可谓干货满满,图像处理提升效率必备。

量子位取其重点,将文章翻译整理如下:


1、scikit Image

scikit-image是一个与numpy数组配合使用的开源Python包,在学术研究、教育和行业领域都可应用。

即使是那些刚接触Python生态系统的人,也会觉得这是一个相当简单直接的库。

通过这个包能完成很多任务,比如图像过滤:




使用match_template 函数进行模板匹配:



官方地址:

https://scikit-image.org/

用户指南:

https://scikit-image.org/docs/stable/user_guide.html

2、Numpy

Numpy是Python的核心库之一,也能支持数组,图像本质上是包含数据点像素的标准Numpy数组。

因此,通过基本的NumPy操作,可以修改图像的像素值。

也可以使用skimage加载图像并用matplotlib显示。

使用方法也和简单,比如需要mask一张图像时:




官方地址:

http://www.numpy.org/

3. Scipy

scipy是Python中另一个核心模块,可用于基本的图像操作和处理任务。

特别需要注意的是,子模块scipy.ndimage提供在n维NumPy数组上运行的功能。这个包目前包括线性和非线性滤波器、二元形态、B-spline插值和物体测量等功能。

可以用高斯过滤用Scipy模糊高斯滤波器:




官方资料:

https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution

4、PIL/ Pillow

PIL(Python Imaging Library)是一个免费的Python编程语言库,它增加了对打开,操作和保存不同图像文件格式的支持。然而,它的发展停滞不前,最后一次更新还是在2009年。

其分支Pillow更易于安装,在所有主要操作系统上运行并支持Python 3。这个库包含基本的图像处理功能,包括点操作、使用一组内置卷积核滤波及颜色空间转换。

当用ImageFilter增强Pillow中的图像时,操作是这样的:




官方介绍:

https://pillow.readthedocs.io/en/3.1.x/index.html

5、OpenCV-Python

OpenCV是计算机视觉应用中使用最广泛的库之一,OpenCV-Python是OpenCV的python API。

总体来说,因为后台由用C / C ++编写,因此OpenCV-Python不仅速度快,也易于编程和部署。

这使其成为执行计算密集型视觉程序的绝佳选择。

来看一下用例,下图展示的是OpenCV-Python在Image Blending中使用Pyramids创建一个名为’Orapple’的新水果的功能。



上手指南:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

6、SimpleCV

SimpleCV也是广泛被使用的构建计算机视觉应用程序的开源框架。

手握SimpleCV,你可以访问几个高性能的视觉库,而无需先了解图像色深(bit depth)、文件格式、色彩空间等。

SimpleCV拥护者的支持理由有两个,一是初学者也可以借此编写简单的视觉任务,二是无论是相机、视频文件、图像和视频流可互相操作。



用户指南:

https://simplecv.readthedocs.io/en/latest/

7、Mahotas

Mahotas包含传统的图像处理功能,如滤波和图像形态学处理,以及用于特征计算,比如兴趣点检测和局部描述子等。

这个库适用于快速开发,算法是用C++实现的,并且针对速度进行了调整。



官方地址:

https://mahotas.readthedocs.io/en/latest/

用户指南:

https://mahotas.readthedocs.io/en/latest/index.html

8、 SimpleITK

ITK是一个开源的跨平台系统,提供一整套用于图像分析的软件工具。

其中,SimpleITK是一个建立在ITK之上的简化层,促进其在简化原型、教育和解释语言中的应用。

SimpleITK是一个图像分析工具包,内含大量组件,支持一般滤波操作、图像分割和图形配准。

SimpleITK本身是用C++编写的,但也适用于包括Python在内的大量编程语言。

下面就是用SimpleITK和Python创建的可视化的CT/MR图:



官方地址:

https://itk.org/

学习资料:

http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/

9、GraphicsMagick

GraphicsMagick号称图像处理领域的瑞士军刀。 代码短小却提供了一个鲁棒、高效的工具和库集合,可用来处理图像的读取、写入和操作。

支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。

将它用于图像边缘提取任务,效果如下:



官方资料:

https://pypi.org/project/pgmagick/

相关资源:

https://github.com/hhatto/pgmagick

10、Pycairo

pyCairo是一个Python的2D图形渲染库,可用于绘制矢量图形的2D图形,在调整大小或变换时不会丢失清晰度。

下面这个用例是用Pycairo绘制线条、基本形状和径向梯度。



官方介绍:

https://cairographics.org/

相关资源:

https://github.com/pygobject/pycairo

传送门

博客原文地址(需要科学前往):

https://towardsdatascience.com/image-manipulation-tools-for-python-6eb0908ed61f

文章下载地址:

https://pan.baidu.com/s/1FDlji1zJIVeoSPQ89WVfMw

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

?'?' ? 追踪AI技术和产品新动态

为一名资深程序员,我想和大家分享一下在网站文章采集方面的经验和技巧。在这个信息爆炸的时代,获取有价值的文章资源对于我们来说非常重要。下面是我总结的一些步骤和注意事项:1. 选择合适的采集工具:根据自己的需求和技术水平,选择一个适合你的网站文章采集工具。市面上有很多选择,比如Scrapy、BeautifulSoup等。2. 分析目标网站结构:在开始采集之前,先对目标网站的结构进行分析。了解目标网站的HTML结构、CSS选择器和API接口等信息,这有助于你编写采集代码。3. 编写采集代码:根据目标网站的结构和分析结果,开始编写采集代码。可以使用Python、Java、PHP等编程语言来实现采集功能。在编写代码时,要注意处理异常情况和错误信息,保证采集过程的稳定性。4. 设置合理的请求频率:在进行网站文章采集时,要设置合理的请求频率。

过于频繁的请求可能会对目标网站造成负担,并且容易被网站屏蔽。根据目标网站的规则和要求,设置一个合理的请求间隔时间是非常重要的。5. 处理反爬机制:很多网站都有反爬机制,为了防止被采集,它们会对常见的爬虫行为进行检测和限制。所以,在进行网站文章采集时,需要处理这些反爬机制。可以通过设置User-Agent、使用代理IP等方式来规避反爬措施。6. 数据清洗与存储:完成网站文章采集后,还需要对采集到的数据进行清洗和存储。清洗数据可以去除HTML标签、过滤无用信息等,使得数据更加规整和可读。存储数据可以选择使用数据库、文件或者云存储等方式。7. 定期更新采集代码:随着目标网站的更新和变化,采集代码也需要进行相应的更新。定期检查和更新采集代码是保持采集效果稳定的关键。8. 注意法律和道德问题:在进行网站文章采集时,要注意遵守相关的法律法规和道德规范。

尊重他人的权益和隐私是我们作为采集人员应该遵循的原则。9. 分享和交流经验:最后,我鼓励大家积极分享和交流自己在网站文章采集方面的经验和技巧。互相学习和进步,共同推动这个领域的发展。希望以上的经验和技巧对大家有所帮助!作为一名网站文章采集者,持续学习和改进是非常重要的。我们可以积极参与相关社区和论坛,与其他采集者分享经验,交流技巧。这样不仅可以提升自己的技术水平,还能从他人的经验中获得启发。在这个信息时代中,网站的结构和技术都在不断发展变化,因此我们需要不断学习新的技术和方法。同时,也要对采集代码进行优化和改进,以提高采集效果。希望我能够通过分享对大家在网站文章采集方面有所帮助。只有不断学习和实践,我们才能更好地利用网络资源。加油!

用户在 HTML 表单中填写并提交数据时,可以使用 PHP 来接收并处理这些数据。要实现这一点,需要创建一个 PHP 脚本来处理提交的数据,然后将 HTML 表单的 "action" 属性设置为该脚本的文件路径。表单提交的数据需要进行验证和过滤,以确保数据的完整性和安全性。可以使用条件语句、正则表达式、过滤器函数等方法来验证和过滤数据,并使用 htmlspecialchars() 函数转义 HTML 标记,以防止 XSS 攻击。

以下是一个简单的示例:

HTML 表单代码:

<form action="submit.php" method="post">

<label for="name">Name:</label>

<input type="text" id="name" name="name">

<label for="email">Email:</label>

<input type="email" id="email" name="email">

<button type="submit">Submit</button>

</form>

PHP 代码(submit.php):

<?php

// 获取表单提交的数据

$name=$_POST['name'];

$email=$_POST['email'];

// 在这里进行处理,例如将数据存储到数据库中

// ...

// 返回一个响应,告诉用户数据已经被成功提交

echo "Thank you for submitting the form, $name!";

?>

在上面的示例中,表单的 "action" 属性设置为 "submit.php",这意味着提交表单时,数据将被发送到 submit.php 文件中的 PHP 代码中进行处理。PHP 代码使用 $_POST 数组来获取表单提交的数据,然后进行处理,例如将数据存储到数据库中。最后,PHP 代码返回一个响应,告诉用户数据已经被成功提交。在处理表单数据时,一定要对用户输入进行验证和过滤,以防止安全漏洞。

需要对表单提交的数据进行验证和过滤,以确保数据的完整性和安全性。以下是一些常见的方法:

1、验证表单字段:在 PHP 代码中使用条件语句和正则表达式等方法来验证表单字段的有效性,例如验证电子邮件地址的格式是否正确。

$email=$_POST['email'];

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

// 如果邮件地址格式不正确,则显示错误消息

echo "Invalid email address";

}

2、过滤输入数据:使用 PHP 中的过滤器函数来过滤表单输入数据,以防止 XSS 攻击和 SQL 注入等安全漏洞。

$name=$_POST['name'];

$name=filter_var($name, FILTER_SANITIZE_STRING); // 过滤特殊字符和标签

3、防止跨站脚本攻击(XSS):在 PHP 代码中使用 htmlspecialchars() 函数来转义 HTML 标记,防止恶意脚本注入到页面中。

$name=$_POST['name'];

$name=htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 转义 HTML 标记

4、防止 SQL 注入攻击:在 PHP 代码中使用参数化查询或准备语句来执行数据库操作,以防止恶意 SQL 语句注入到数据库中。

$stmt=$pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

$stmt->bindParam(':name', $name);

$stmt->bindParam(':email', $email);

$stmt->execute();

通过这些方法,可以确保表单提交的数据是安全和有效的,并且能够正常地处理和存储到数据库中。