用于图像处理的Python顶级库 !!

文章目录

前言

1、OpenCV

2、Scikit-Image

3、Scipy

4、Python Image Library(Pillow / PIL)

5、Matplotlib

6、SimpleITK

7、Numpy

8、Mahotas


前言

正如IDC所指出的,数字信息将飙升至175ZB,而这些信息中的巨大一部分是图片。数据科学家需要(预先)测量这些图像,然后再将它们放入人工智能和深度学习模型中。在愉快的部分开始之前,他们需要做重要的工作。

为了快速地处理大量信息,科学家需要利用图像准备工具来完成人工智能和深度学习任务。

在本文中,将深入研究Python中最有用的图像处理库,这些库正在人工智能和深度学习任务中得到大力利用。


1、OpenCV

OpenCV是最著名和应用最广泛的开源库之一,用于图像处理、目标检测、图像分割、人脸识别等计算机视觉任务。除此之外,它还可以用于机器学习任务。

这是英特尔在2022年开发的。它是用C++编写的,但是开发人员已经提供了Python和java绑定。它易于阅读和使用。

为了建立计算机视觉和机器学习模型,OpenCV有超过2500种算法。这些算法对于执行各种任务非常有用,例如人脸识别、目标检测等。让我们看一些可以使用OpenCV执行的示例:

(1)灰度缩放

灰度缩放是一种将3通道图像(如RGB、HSV等)转换为单通道图像(即灰度)的方法。最终的图像在全白和全黑之间变化。灰度缩放的重要性包括降维(将3通道图像转换为单通道图像)、降低模型复杂度等。

下面的代码片段展示了OpenCV中的灰度缩放:

import cv2 as cv
img = cv.imread('example.jpg')
cv.imshow('Original', img)
cv.waitKey()
#Use cvtColor, to convert to grayscale
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('Grayscale', gray_img)
cv.waitKey(0)

(2)旋转图像

OpenCV有助于使用从0到360度的任意角度旋转图像。

检查以下代码将图像旋转180度:

import matplotlib.pyplot as plt
img = cv.imread('example.jpg')
h, w = image.shape[:2]
rot_matrix = cv.getRotationMatrix2D((w/2,h/2), -180, 0.5)
rot_image = cv.warpAffine(img, rot_matrix, (w, h))
plt.imshow(cv.cvtColor(rot_image, cv.COLOR_BGR2RGB))

OpenCV还提供了除我们到目前为止讨论的功能之外的其他功能。除此之外,它还有助于人脸检测、图像分割、特征提取、目标检测和三维重建等。

有关更多信息,请查看官方文档:https://opencv.org/

2、Scikit-Image

Scikit-Image 是另一个伟大的开源图像处理库。它几乎适用于任何计算机视觉任务。它是最简单、最直接的库之一。这个库的某些部分是有Cython编写的(它是Python编程语言的超集,旨在使python比C语言要快)。

它提供了大量的算法,包括分割、颜色空间操作、几何变换、滤波、形态学、特征检测等。

Scikit-Image使用Numpy数组作为图像对象。让我们看看如何在scikit图像中执行活动轮廓操作。活动轮廓描述图像中形状的边界。

查看以下活动轮廓操作代码:

import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data
from skimage.filters import gaussian
from skimage.segmentation import active_contour
image = data.astronaut()
# Data for circular boundary
s = np.linspace(0, 2*np.pi, 400)
x = 220 + 100*np.cos(s)
y = 100 + 100*np.sin(s)
init = np.array([x, y]).T
# formation of the active contour
centre = active_contour(gaussian(image, 3),init, alpha=0.015, beta=10, gamma=0.001)
figure, axis = plt.subplots(1, 2, figsize=(7, 7))
ax[0].imshow(image, cmap=plt.cm.gray)
ax[0].set_title("Original Image")
ax[1].imshow(image, cmap=plt.cm.gray)

有关更多信息,请查看官方文档:https://scikit-image.org/docs/stable/auto_examples/

3、Scipy

Scipy 主要用于数据和科学计算,但有时也可以使用子模块Scipy.ndimage用于基本的图像操作和处理任务。

归根结底,图像只是多维数组,Scipy提供了一组用于操作n维Numpy操作的函数。Scipy提供了一些基本的图像处理操作,如人脸检测、卷积、图像分割、读取图像、特征提取等。

除此之外,还可以执行过滤,在图像上绘制轮廓线。

请查看以下代码使用Scipy模糊图像:

from scipy import ndimage, misc
from matplotlib import pyplot as plt
f = misc.face()
b_face = ndimage.gaussian_filter(f, sigma=3)
figure, axis = plt.subplots(1, 2, figsize=(16, 8))

有关更多信息,请查看官方文档:https://docs.scipy.org/doc/scipy/reference/ndimage.html

4、Python Image Library(Pillow / PIL)

它是一个用于图像处理任务的开放源码python库。它提供了其他库通常不提供的特殊功能,如过滤、打开操作和保存图像。这个库支持多种文件格式,这使它更高效。PIL还支持图像处理、图像显示和图像存档等功能。让我们看看使用Pillow / PIL的图像增强。

更改图像的清晰度:

有关更多信息,请查看官方文档:https://pillow.readthedocs.io/en/stable/index.html

5、Matplotlib

Matplotlib 主要用于二维可视化,如散点图、条形图、直方图等,但我们也可以将其用于图像处理。从图像中提取信息是有效的。它不支持所有的文件格式。

背景颜色更改操作后,请查看以下图像:

有关更多信息,请查看官方文档:https://matplotlib.org/stable/tutorials/introductory/images.html

6、SimpleITK

它也称为图像分割和注册工具包。它是一个用于图像注册和图像分割的开源库。像OpenCV这样的库将图像视为一个数组,但是这个库将图像视为空间中某个区域上的一组点。

有关更多信息,请查看官方文档:https://itk.org/

7、Numpy

它是一个用于数值分析的开放源码python库。它包含一个矩阵和多维数组作为数据结构。但是NumPy也可以用于图像处理任务,例如图像裁剪、操作像素和像素值的蒙版。

检查下图以从图像中提取绿色/红色/蓝色通道:

有关更多信息,请查看官方文档:http://:https://scikit-image.org/docs/dev/user_guide/numpy_images.html

8、Mahotas

它是另一个用于计算机视觉和图像处理的开放源码python库。它是为生物信息学而设计的。它提供了很多算法,这些算法是用C++编写的,速度很快,使用了一个好的Python接口。它以NumPy数组读取和写入图像。

使用Mahotas检查下面的模板匹配图像:

有关更多信息,请查看官方文档:

参考:小白学视觉

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

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

相关文章

DTAN: Diffusion-based Text Attention Network for medical imagesegmentation

DTAN:基于扩散的医学图像分割文本关注网络 摘要 在当今时代,扩散模型已经成为医学图像分割领域的一股开创性力量。在此背景下,我们引入了弥散文本注意网络(Diffusion text - attention Network, DTAN),这是一个开创性的分割框架&#xff0c…

http“超级应用与理解”

本篇文章来介绍一下http协议和其应用 1.http协议是在OSI模型的哪一层 HTTP(超文本传输协议)是应用层协议,它是在 OSI 模型的最高层,即第七层——应用层。HTTP 通过互联网来传输数据和信息,主要用于 Web 浏览器和 Web …

前端开发,Vue的双向数据绑定的原理

目录 一、什么是前端 二、Vue.JS框架 三、双向数据绑定 四、Vue的双向数据绑定的原理 一、什么是前端 前端通常指的是网页或应用程序中用户直接交互和感知的部分,也称为客户端。前端开发涉及使用HTML、CSS和JavaScript等技术来构建用户界面和交互功能。前端开发…

SW2000TSN-千兆百兆车载以太网TSN交换机

更多资讯可以进入官网查看或者联系我们http://www.hdn-vdo.com

【分享】JLINK的SW调试模式连线方式

大家知道,JLINK有2种调试模式:JTAG和SWD(串行模式)。 JTAG是常用模式,大家都熟悉、不废话了;如果使用SW模式,需要(只需要)4根连线,连接方式如下: …

360安全浏览器_360se15.1.1453.64_优化版_【屏蔽文件关联】

360安全浏览器15正式版(360SE15)是基于Chromium内核的双核浏览器,Chromium内核提升至114,支持Win7系统,新增夜间模式,自动模式动态切换支持IE内核.各类实用功能,安全保护技术,丰富皮肤库,风格多样化. 360安全浏览器_360se6.64位_优化版 360安全浏览器PC官方版下载丨最新版下载…

GPT-4对编程开发的支持

在编程开发领域,GPT-4凭借其强大的自然语言理解和代码生成能力,能够深刻理解开发者的意图,并基于这些需求提供精准的编程指导和解决方案。对于开发者来说,GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

进程间通信——管道

文章目录 进程间通信的介绍进程间通信的目的进程间通信的本质 匿名管道创建管道匿名管道的特征 命名管道小结 进程间通信的介绍 进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。 进程间通信的…

BulingBuling[Beyond the To-Do List] - 《让金钱为你服务》 [ Make Money Work for You ]

与《财务自由: 赚到足够的钱的有效方法》作者Grant的简短访谈 让钱为你工作 超越待办事项清单 主持人:Erik Fisher Make Money Work for You Beyond the To-Do List Hosted by Erik Fisher 与Erik Fisher一起探索如何确定你生活中最大的财务杠杆以及使用它们的最佳方…

在Postgresql 下安装QGIS

安装QGIS的前提是需要 在windows下安装Postgres,具体可以参考文章: Windows 安装和连接使用 PgSql数据库 安装GIS的具体步骤如下: 一.打开 Application Stack Builder 二.选择默认端口和安装目标 三.选择【Spatial Extensions】 四.选择安装…

【图像分割 2024 ICLR】Conv-LoRA

【图像分割 2024 ICLR】Conv-LoRA 论文题目:CONVOLUTION MEETS LORA: PARAMETER EFFICIENT FINETUNING FOR SEGMENT ANYTHING MODEL 中文题目:卷积满足lora:分段任意模型的参数有效微调 论文链接:https://arxiv.org/abs/2401.17868 论文代码&…

LabVIEW焊缝缺陷超声检测与识别

LabVIEW焊缝缺陷超声检测与识别 介绍基于LabVIEW的焊缝缺陷超声检测与识别系统。该系统利用LabVIEW软件和数据采集卡的强大功能,实现了焊缝缺陷的在线自动检测,具有通用性、模块化、功能化和网络化的特点,显著提高了检测的效率和准确性。 随…

c++类和对象新手保姆级上手教学(上)

前言: c其实顾名思义就是c语言的升级版,很多刚学c的同学第一感觉就是比c语言难学很多,其实没错,c里的知识更加难以理解可以说杂且抽象,光是类和对象,看起来容易,但想完全吃透,真的挺…

N-144基于微信小程序在线订餐系统

开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、ElementUI、 Vant Weapp 服务端技术:springbootmybatisredis 本系统分微信小程序和…

luigi,一个好用的 Python 数据管道库!

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 大家好,今天为大家分享一个超级厉害的 Python 库 - luigi。 Github地址:https://github.com/spotify/luigi 在大数据时代,处理海量数据已经成…

UI风格汇:毛玻璃风格风靡的原因解读

Hello,我是大千UI工场,设计风格是我们新开辟的栏目,主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等,本次带来的是毛玻璃风格的解读,有设计需求可以私聊。 一、什么是毛玻璃风格 毛玻璃风格(Fros…

lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\lclembed 修改 lclembed.lpr 如下,将 fphttpapp. 注释掉,因为我用不上 a simple…

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

一、本文介绍 本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级…

Leetcode1686. 石子游戏 VI

Every day a Leetcode 题目来源:1686. 石子游戏 VI 解法1:贪心 排序 贪心的思想: 这道题模拟一个石子游戏,求解最后的比赛结果。 题目说两位玩家都会采用 最优策略 进行游戏,那么关键点就在于什么是最优策略&…

Swift Combine 合并多个管道以更新 UI 元素 从入门到精通十七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…