【计算机视觉 | Python】十个 Python 图像处理工具,建议点赞收藏

news2024/9/23 7:22:57

文章目录

  • 一、前言
  • 二、常见的库
    • 2.1 scikit-image
    • 2.2 NumPy
    • 2.3 SciPy
    • 2.4 PIL / Pillow
    • 2.5 OpenCV-Python
    • 2.6 SimpleCV
    • 2.7 Mahotas
    • 2.8 SimpleITK
    • 2.9 pgmagick
    • 2.10 Pycairo

一、前言

这些 Python 库提供了一种简单直观的方法来转换图像并理解底层数据。

今天的世界充满了数据,图像是这些数据的重要组成部分。但是,在使用它们之前,必须对这些数字图像进行处理 - 分析和操作,以提高其质量或提取一些可以使用的信息。

常见的图像处理任务包括显示:

  • 基本操作如裁剪,翻转,旋转等
  • 图像分割,分类和特征提取
  • 图像恢复
  • 图像识别

Python 是这些图像处理任务的绝佳选择,因为它作为一种科学编程语言日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具。

本文着眼于10个最常用的 Python 库,用于图像处理任务。

二、常见的库

2.1 scikit-image

scikit-image 是一个与 NumPy 数组一起使用的开源 Python 包。它实现了用于研究,教育和行业应用的算法和实用程序。它是一个相当简单直接的库,即使对那些不熟悉 Python 生态系统的人也是如此。代码质量高,经过同行评审,由一个活跃的志愿者社区编写。

scikit-image 文档丰富,有很多示例和实际使用方法。该包通过 skimage 导入,大多数功能可以在子模块中找到。

图像过滤:

import matplotlib.pyplot as plt
%matplotlib inline
from skimage import data,filters
image = data .coins()
edges = filters.sobel(imageplt.imshow(edges , cmap= "gray")

在这里插入图片描述

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

在这里插入图片描述

你可以在 gallery 中找到更多的例子。

2.2 NumPy

NumPy 是 Python 编程中的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准 NumPy 数组。因此,通过使用基本的 NumPy 操作(如 slicing,masking 和 fancy indexing),您可以修改图像的像素值。可以使用 skimage 加载图像并使用 Matplotlib 显示。

使用 Numpy 来 mask 图片:

import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data .camera( )
type(image)
numpy.ndarray
mask = image < 87
image[mask] = 255
olt.imshow(image, cmap = 'gray')

在这里插入图片描述

2.3 SciPy

SciPy 是 Python 的另一个核心科学模块(如 NumPy),可用于基本的图像操作和处理任务。特别是,子模块 scipy.ndimage(在 SciPy v1.1.0 中)提供了在 n 维 NumPy 数组上运行的函数。该软件包目前包括线性和非线性滤波,二进制形态,B 样条插值和对象测量等功能。

使用SciPy通过高斯滤波器进行模糊:

from scipy import misc,ndimage
face = misc.face()
blurred face = ndimage .gaussian filter(face, sigma=3)
very blurred= ndimage.gaussian filter(face, sigma=5)
plt.imshow(<image to be displayed>)

在这里插入图片描述

2.4 PIL / Pillow

PIL( Python Imaging Library )是一个免费的 Python 编程语言库,它增加了对打开,操作和保存许多不同图像格式的支持。

然而,它的发展停滞不前,其最后一版发布于2009年。

幸运的是,Pillow 是一个积极开发的 PIL 分支,它更易于安装,可在所有主流操作系统上运行,并支持 Python 3。

该库包含基本图像处理功能,包括点操作,使用一组内置卷积内核进行过滤以及颜色空间转换。

使用 ImageFilter 增强 Pillow 中的图像:

在这里插入图片描述

2.5 OpenCV-Python

OpenCV(Open Source Computer Vision Library)是计算机视觉应用中使用最广泛的库之一。OpenCV-Python 是 OpenCV 的 Python API。因为后台由 C / C ++ 编写的代码组成,OpenCV-Python 速度很快快,但它也很容易编码和部署(由于前端的 Python 包装器)。这使其成为执行计算密集型计算机视觉程序的绝佳选择。

通过 OpenCV2-Python-Guide 可以很容易上手 OpenCV-Python,使用 OpenCV-Python 中的 Image Blending using Pyramids 创建一个 “Orapple”:

在这里插入图片描述

2.6 SimpleCV

SimpleCV 是另一个用于构建计算机视觉应用程序的开源框架。它提供访问几个高性能计算机视觉库,如 OpenCV,的接口,但无需了解位深度,文件格式,色彩空间等。它的学习曲线远小于OpenCV,并且(如其标语所示),“它令计算机视觉变得简单。”支持 SimpleCV 的一些观点是:

即使是初学者也可以编写简单的机器视觉测试。

摄像机,视频文件,图像和视频流都可以互操作。

在这里插入图片描述

2.7 Mahotas

Mahotas 是另一个用于 Python 的计算机视觉和图像处理库。它包含传统的图像处理功能,如过滤和形态操作,以及用于特征计算的更现代的计算机视觉功能,包括兴趣点检测和局部描述符。

使用 Python 编写接口,适用于快速开发,但算法是用 C ++ 实现的,并且针对速度进行了优化。 Mahotas 库运行快速,代码简约,依赖性小。阅读其官方文章以获得更多了解。

Mahotas 库依靠简单的代码来完成工作。例如,使用最少量的代码 Finding Wally 问题就可以很好地解决。解决 Finding Wally 问题:

在这里插入图片描述
在这里插入图片描述

2.8 SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是一个“开源,跨平台系统,为开发人员提供了一套用于图像分析的广泛软件工具。

SimpleITK 是一个基于 ITK 构建的简化层,旨在促进其在快速原型设计,交易以及解释语言方面的应用。”它也是一个图像分析工具包,具有大量组件,支持一般过滤操作,图像分割和配准。 SimpleITK 是用 C ++ 编写的,但它可用包括 Python 在内的大量编程语言进行操作。

有大量的 Jupyter Notebook 说明了 SimpleITK 在教育和研究活动中的应用。

Notebooks 使用 Python 和 R 编程语言演示如何使用 SimpleITK 进行交互式图像分析。

使用 SimpleITK 和 Python 创建可视化的严格 CT / MR 配准过程:

在这里插入图片描述

2.9 pgmagick

pgmagick 是基于 Python 的 GraphicsMagick 库的包装器。GraphicsMagick 图像处理系统,有时也被称为图像处理的瑞士军刀。其强大而高效的工具和库集合支持在超过88种主要格式(包括 DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM 和 TIFF)上读取,写入和操作图像。

图像缩放:

在这里插入图片描述

边缘提取:

在这里插入图片描述

2.10 Pycairo

Pycairo 是 Cairo 图形库的一组 Python 绑定。Cairo 是一个用于绘制矢量图形的 2D 图形库。矢量图形很有趣,因为它们在调整大小或变换时不会失去清晰度。Pycairo 可以从 Python 调用 Cairo 命令。

用 Pycairo 绘制线条,基本形状和径向渐变:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/510843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux【网络编程】之UDP网络程序模拟实现

linux【网络编程】之UDP网络程序模拟实现 一、开发环境二、服务端实现2.1 接口认识2.1.1 socket创建网络通信套接字2.1.2 bind&#xff1a;绑定Ip和端口号2.1.3 sockaddr_in结构体2.1.4 IP地址转换函数&#xff1a;inet_addr、inet_ntoa2.1.5 recvfrom&#xff1a;读取数据 2.2…

大语言模型进化树重磅发布,感慨技术方向选择的残酷,文末有彩蛋

文 / 高扬&#xff08;微信公众号&#xff1a;量子论&#xff09; 今天说点有深度的内容。五一假期&#xff0c;学习了一篇论文《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》。 这篇论文来自 Amazon 以及 Texas A&M University 研究团队&…

【2023 · CANN训练营第一季】应用开发深入讲解——第五章 端到端案例讲解

学习资源 样例介绍 使用DVPP加速预处理网络输入&#xff0c;并通过模型转换使能静态AIPP功能&#xff0c;使能AIPP功能后&#xff0c;YUV420SP_U8格式图片转化为RGB&#xff0c;然后减均值和归一化操作&#xff0c;并将该信息固化到转换后的离线模型中&#xff0c;对ResNet50…

传统IDC服务器迁移上云流程

上云是趋势&#xff0c;越来越多企业的IDC服务器选择迁移上云&#xff0c;迁移上云的方式有很多&#xff0c;阿里云提供服务器迁移中心SMC来帮助用户迁移上云。使用SMC服务器迁移中心&#xff0c;将您的源服务器方便快捷地迁移至阿里云&#xff0c;支持的迁移源类型包括IDC服务…

【Java EE 初阶】锁策略以及CAS问题

目录 1.常见的锁策略 1.乐观锁 vs 悲观锁 2.读写锁 3.重量级锁 vs 轻量级锁 4.自旋锁&#xff08;Spin Lock&#xff09; 5.公平锁 vs 非公平锁 6.可重入锁 vs 不可重入锁 7.Synchronized实现了哪些锁策略&#xff1f; 1.是乐观锁也是悲观锁 2.既是轻量级锁也是重量级…

K_A37_005 基于STM32等单片机驱动ADS1115 ADC模块 串口与OLED0.96双显示

K_A37_005 基于STM32等单片机驱动ADS1115 ADC模块 串口与OLED0.96双显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明IIC时序对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RCADS1115 ADC模块1.2、STM32F103C8T6ADS1115 ADC模块 五、基础知识学习…

解决“未在本地计算机注册“OraOLEDB.Oracle.1”提供程序“问题

由于本地使用Oracle.ManagedDataAccess批量插入问题&#xff0c;连接数据库时报错 : ProviderOraOLEDB.Oracle;Data Sourceorcl;User IdQueueDp;PasswordQueueDp 此问题之前解决过没记录&#xff0c;又遇到了&#xff0c;忘了怎么解决&#xff0c;试了很多没效果 解决办法一、…

用好git stash,工作超nice

一、介绍 如果修改后的内容还不想commit&#xff0c;就可以用git stash命令。它会将工作区和暂存区中的修改(也就是还没commit的内容)都会被保存到堆栈里&#xff0c;并在之后恢复到任意指定的分支上。 二、应用场景 1、在分支a进行开发feature 1时&#xff0c;突然需要紧急…

2、Orangepi Zero2刷机和系统启动

目录 2.1 工具安装 2.2 刷机 2.3 登录系统 2.4 修改登陆密码 2.5 网络配置 2.6 SSH登陆开发板 就像买了电脑&#xff0c;出厂带有 windows 操作系统&#xff0c;才算是正在的电脑&#xff0c;开发板需要烧写对应的系统固件&#xff0c;才 能正常发挥作用 工具 Orangepi Zero2…

【异常解决】浏览器无法访问此网站ERR_UNSAFE_PORT/网页可能无法连接,或者它已永久性地移动到了新网址问题解决方案

浏览器无法访问此网站ERR_UNSAFE_PORT问题解决方案 一、问题描述二、问题原因三、解决方案3.1 方案1修改服务器访问端口号&#xff08;推荐&#xff09;3.2 方案2修改浏览器设置3.2.1 Chrome浏览器3.2.2 Firefox浏览器3.2.3 Edge浏览器 一、问题描述 访问某一个特定的网址之后…

Flume系列:Flume Channel使用

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;Kafka Channel 2&#xff1a;File Channel 3&#xff1a;Memory Channel Apache Hadoop生态-目录汇总-持续更新 系统环境&#xff1a;centos7 Java环境&#xff1a;Java8 1&#xff1a;Kafka Channel Kafka Chan…

vim键位图+vim基本操作命令表

前言&#xff1a;本章末vim的基本操作命令总结的比较全&#xff0c;建议收藏起来&#xff0c;方便后面使用时作字典查找。 目录 一、什么是vi(vim)&#xff1f; vim键盘 二、vim工作模式 1&#xff09;命令模式 2&#xff09;编辑模式 3&#xff09;末行模式 4&#xf…

「2024」预备研究生mem-等差数列基础

一、等差数列基础 二、课后练习题 思路&#xff0c;知道a1和d &#xff0c;就可以知道an,sn

Kafka 集成 SpringBoot, 快速入门

一、kafka的生产者和消费者 1. 生产者发送消息的流程 2. 消费者接收消息的流程 二、 java 代码实现 1. 添加依赖&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka_2.12</artifactId></dependency>2. 实现…

回溯算法例题(剪枝策略)

目录 1.组合1.77. 组合2.216. 组合总和 III3.17. 电话号码的字母组合4.39. 组合总和5.40. 组合总和 II 2.分割1.131. 分割回文串2.*93. 复原 IP 地址 3.子集1.78. 子集2.90. 子集 II 4.排列1.46. 全排列2.47. 全排列 II 5.棋盘问题1.51. N 皇后2.37. 解数独 6.其他1.491. 递增子…

系统移植 5-10

1.进入linux内核源码目录下&#xff0c;打开Makefile文件&#xff0c;搜索vmlinux&#xff0c;找到cmd_link-vmlinux命令&#xff0c; 1179 cmd_link-vmlinux \ 1180 $(CONFIG_SHELL) $< "$(LD)" "…

不同应用场景瑞芯微RK3568主板方案定制

随着物联网和智能设备的迅猛发展&#xff0c;瑞芯微RK3568主板方案作为一种高性能的系统System-on-a-chip&#xff08;SoC&#xff09;&#xff0c;已经成为嵌入式系统、智能家居设备和工业自动化设备等应用场景的首选方案。定制瑞芯微RK3568主板方案可以满足不同应用场景的需求…

科技云报道:ChatGPT应用爆火,安全的大数据底座何处寻?

科技云报道原创。 毫无疑问&#xff0c;AIGC正在给人类社会带来一场深刻的变革。 而剥开其令人眼花缭乱的华丽外表&#xff0c;运行的核心离不开海量的数据支持。 ChatGPT的“入侵”已经引起了各行各业对内容抄袭的担忧&#xff0c;以及网络数据安全意识的提高。 虽然AI技术…

线程的原子性、可见性、有序性及线程安全知识整理

要想保证线程安全&#xff0c;必须同时满足原子性、可见性、有序性。 一、定义 1.1 原子性 一个操作或者多个操作&#xff0c;要么全部执行&#xff0c;并且执行的过程不会被打断&#xff0c; 要么就全部不执行&#xff08;一个操作是不可被分割的&#xff09;。 Java中实现…

JavaScript经典教程(七)-- JavaScript初级

190&#xff1a;JavaScript初级内容 - DOM查询、插入内容、赋予样式等 1、DOM操作 DOM&#xff1a;节点&#xff0c;也就是html中的元素&#xff1b; DOM操作&#xff1a;其实就是节点元素的方法&#xff1b; &#xff08;1&#xff09;innerHTML - 返回元素内容 同时也可以…