【杂谈】-8个常用的Python图像操作库

news2024/11/15 6:40:19

8个常用的Python图像操作库

文章目录

  • 8个常用的Python图像操作库
    • 1、OpenCV
    • 2、Pillow(PIL)
    • 3、Scikit Image
    • 4、Numpy
    • 5、SciPy
    • 6、Mahotas
    • 7、SimpleITK
    • 8、Matplotlib

在当今世界,数据在每个行业垂直领域中都发挥着至关重要的作用。图像可以是提取数据的来源之一。图像可以定义为像素矩阵,每个像素代表一种颜色,这种颜色可以被视为一个数据值。

图像处理有助于揭示任何图像中的底层数据。它帮助您从图像中提取、操作和过滤数据。图像处理的主要目标是从图像中发现一些有价值的信息。

图像处理有各种应用,如图像锐化、图像恢复、模式识别、视频处理等。大多数图像处理应用都属于数据分析和数据科学领域。

说到数据分析,我们脑海中浮现的唯一语言就是Python。它也是最常用于图像处理的语言,因为它拥有广泛的库集,这使得开发人员能够使用简单的代码行执行复杂操作。

让我们来看一些主要用于图像处理的Python库。

1、OpenCV

OpenCV(开源计算机视觉库)是一个流行的Python数据可视化库。它是一个开源库,适用于多种编程语言,包括C++、Java以及汇编语言。

这个库是由英特尔使用C++编程语言开发的,旨在用于实时计算机视觉。它非常适合执行计算密集型的计算机视觉程序。

1)安装

由于OpenCV是一个第三方库,我们可以使用Python的pip包管理器工具为我们的Python环境安装它。

pip install opencv-python

2)使用示例

# import opencv
import cv2
 
# Read the image
image = cv2.imread('tesla.png')
# grayscale the image
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
cv2.imshow('Original Image', image)
 
cv2.imshow('Grayscale Image', gray_image)
cv2.waitKey(0)
 
cv2.destroyAllWindows()

输出结果如下:

在这里插入图片描述

2、Pillow(PIL)

Pillow是另一个流行的Python图像处理库。它是每个初学者都可以开始使用的最基本的图像处理库。它也被称为PIL,代表Python Imaging Library(Python成像库)。

PIL库附带了不同的文件格式化扩展名,这些扩展名提供了强大而复杂的功能来执行图像处理。如果我们将PIL与OpenCV进行比较,PIL是一个轻量级库,功能较少,使得它对刚刚进入图像处理领域的新Python开发者来说易于学习和操作。

1)安装

PIL也是一个第三方开源库,可以使用pip install命令进行安装。

pip install pillow 

2)示例

下面将图像转换为灰度图像:

from PIL import Image
 
with Image.open("tesla.png") as im:
    #show the original image
    im.show("Original Image")
 
    #convert into grayscale
    grayscaleImg = im.convert("L")
 
    #show the grayscale image
    grayscaleImg.show()

输出结果如下:

在这里插入图片描述

3、Scikit Image

Scikit Images是一个科学倾向的Python图像处理库。它旨在使用Numpy和Scipy库处理图像。它包括各种科学算法,如分割、颜色空间操作、分析、形态学等。这个库是用Python和C编程语言编写的。它适用于所有流行的操作系统,如Linux、macOS和Windows。

1)安装

scikit-image是一个开源库,我们可以使用pip install命令进行安装。

pip install scikit-image

2)示例

from skimage import io
from skimage.color import rgb2gray
 
 
# way to load car image from file
car = io.imread('tesla.png')[:,:,:3]
 
#convert into grayscale
grayscale = rgb2gray(car)
 
#show the original
io.imshow(car)
io.show()
 
#show the grayscale
io.imshow(grayscale)
io.show()

输出结果如下:

在这里插入图片描述

4、Numpy

NumPy是最基本的Python科学计算库。它因在Python中引入多维数组或矩阵而闻名。它是一个专门的科学计算库。此外,它还具有广泛的数学功能,如数组、线性代数、基本统计操作、随机模拟、逻辑排序、搜索、形状操作等。

1)安装

同样,要安装NumPy,我们可以使用pip install命令。

pip install numpy

2)示例

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
 
#load the original image
img_rgb = mpimg.imread('tesla.png')[...,:3]
 
#show the original image
plt.imshow(img_rgb)
plt.show()
 
#convert the image into grayscale
img_gray = np.dot(img_rgb,[0.299, 0.587, 0.144])
 
#show the grayscale image
plt.imshow(img_gray, cmap=plt.get_cmap('gray'))
plt.show()

输出结果如下:

在这里插入图片描述

5、SciPy

类似于NumPy,SciPy也是一个科学计算库。它拥有比NumPy更多的功能,因为它是作为NumPy库的扩展而构建的。

Scipy为数据操作和数据可视化提供了高级和复杂的命令和类。它涵盖了广泛的数据处理工具。此外,它还支持并行编程、从网络获取数据、数据驱动的子程序以及其他数学功能。

1)安装

要安装SciPy库,我们可以借助Python包管理器命令行工具pip。

pip install scipy

2)示例

from scipy import misc,ndimage
from matplotlib import pyplot as plt
import numpy as np
img=misc.face()
 
#show original image
plt.imshow(img)
plt.show()
 
#grayscale using gaussian blur filter
grayscale=ndimage.gaussian_filter(img,sigma=2)
 
#show grayscale image
plt.imshow(grayscale)
plt.show()

输出结果如下:

在这里插入图片描述

6、Mahotas

Mahotas是另一个可以进行各种图像处理操作的Python计算机视觉库。它是用C++设计的,包括许多算法来提高图像处理速度。此外,它使用NumPy数组将图像表示为矩阵。Watershed、凸点计算、命中与未命中卷积以及Sobel边缘是该库中的主要功能。

1)安装

Mahotas是一个开源库,可以使用以下终端命令进行安装。

pip install mahotas

2)示例

import mahotas
from pylab import imshow, show
 
#read the image
img = mahotas.imread('tesla.png')
 
#show original image
imshow(img)
show()
 
img = img[:, :, 0]  
grayscale = mahotas.overlay(img)
 
#show grayscale image
imshow(grayscale)
show()

输出结果如下:

在这里插入图片描述

7、SimpleITK

SimpleITK是一个强大的图像配准和分割工具包。它是作为ITK工具包的扩展而构建的,旨在提供简化的界面。它支持多种编程语言,如Python、R、C++、Java、C#、Ruby、TCL和Lua。

该库支持2D、3D和4D图像。与其他Python图像处理库和框架相比,该库的图像处理速度非常快。

1)安装

pip install SimpleITK

2)示例

import SimpleITK as sitk
import matplotlib.pyplot as plt
 
logo = sitk.ReadImage('tesla.png')
 
# GetArrayViewFromImage returns an immutable numpy array view to the data.
plt.imshow(sitk.GetArrayViewFromImage(logo))
plt.show()

输出结果如下:

在这里插入图片描述

8、Matplotlib

尽管Matplotlib是一个数据可视化库,但它也可以用作图像处理库。它通常用于绘制由NumPy数组表示的数据,但也可以读取NumPy数组表示的图像数据。在上面的库中,我们已经使用过Matplotlib库来显示和绘制图像。

1)安装

pip install matplotlib

2)示例

# importing libraries.
import matplotlib.pyplot as plt
from PIL import Image
 
# open image using pillow library
image = Image.open("tesla.png")
#show original image
plt.imshow(image)
plt.show()
 
# grayscale the image
plt.imshow(image.convert("L"), cmap='gray')
plt.show()

输出结果:

在这里插入图片描述

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

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

相关文章

Redis 操作的原子性及其保证机制

Redis 操作的原子性及其保证机制 1、单命令的原子性2、事务的原子性3、并发操作的考虑4、总结 💖The Begin💖点点关注,收藏不迷路💖 Redis 的操作之所以是原子性的,主要得益于其单线程的执行模型。这种模型确保了每个命…

5.9.8 最优化控制初探——PID参数优化

总目录:http://t.csdnimg.cn/YDe8m 5.9.8 最优化控制初探——PID参数优化 之前在“A_2_PID控制转速例程”例程中,PID参数是手动调节的。然而在已经获得系统完整数学模型的情况下,我们可以使用效率更高的方法,即最优化控制。先来看…

Nios II新建项目

1.Nios II Application and BSP form Template BSP:board support package(板级支持包) 2.Nios II Sotware Examples SOPC Information File name:选择项目文件夹下的 .sopcinfo 文件 Project name:自定义名称 Project location:Use default locatio…

删除镜像报容器依赖错误

1、删除镜像报容器依赖错误 出现这个错误的原因是因为5303b5323a4c容器使用了此镜像。解决:先停止容器、删除容器、之后再镜像即可。 2、查看镜像对应的容器 # docker ps -a | grep 611a37aa5ffc 3、先停止容器 # docker stop 5303b5323a4c 4、删除容器 # do…

Spring Boot: 2.7.x 至 2.7.18 及更旧的版本,漏洞说明

本文提供的修复指南将帮助开发者有效规避 CVE-2024-38808 和 CVE-2024-38809 的风险。如果你正在使用老版本的 Spring Boot,请尽快参考本文进行修复与升级。 此漏洞来源于spring官网:https://spring.io/blog/2024/08/14/spring-framework-releases-fixe…

flink车联网项目前篇:业务实现1(第67天)

系列文章目录 业务实现 3.1 创建catalog 3.1.1 vvp 3.1.2 mysqlcdc 3.1.2.1 使用限制 3.1.2.2 配置MySQL Catalog 3.1.3 xxxxpm 3.1.3.1 下载Paimon插件 3.1.3.2 在MaxCompute项目中上传Paimon插件 3.1.3.3 创建自定义Catalog类型 3.1.3.5 配置catalog 3.1.4 xxxxx 3.1.4.1 背…

Linux设置yum源为阿里云镜像源

一、验证网络是否可以连接阿里云镜像 #验证网络是否可以连接阿里云镜像 ping mirrors.aliyun.com如果ping不通,则找一台可以连接外网的电脑,ping一下mirrors.aliyun.com,找到mirrors.aliyun.com对应的ip。 二、 手动配置 #删除原yum源 rm -…

微信小程序免费《短视频去水印》

分享一个uniapp开发的微信小程序免费《短视频去水印》小程序 <template><view class"content"><view class"area-wrap"><textarea name"" v-model"state.content" maxlength"800" id"" cols…

接口自动化测试怎么做?该怎么学习

一. 什么是接口测试 顾名思义&#xff0c;接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型&#xff0c;测试类型又主…

《黑神话:悟空》媒体评分解禁 M站均分82

《黑神话&#xff1a;悟空》媒体评分现已解禁&#xff0c;截止发稿时&#xff0c;M站共有43家媒体评测&#xff0c;均分为82分。 部分媒体评测&#xff1a; God is a Geek 100&#xff1a; 毫无疑问&#xff0c;《黑神话&#xff1a;悟空》是今年最好的动作游戏之一&#xff…

linux系统安装mysql服务

linux系统安装mysql服务 1.下载安装包2.下载压缩文件解压安装3. 安装完启动服务4.查看安装密码5.使用上述密码登录6.修改密码7.创建一个root可以在任意主机远程连接数据库8.远程登录成功 1.下载安装包 https://downloads.mysql.com/archives/community/ mysql下载地址 2.下载…

【AI安防】YOLOv8 + OpenVINO2023 + QT5 电子围栏预警系统

引言 电子围栏是一种利用无线通信技术和地理信息系统实现的虚拟边界&#xff0c;用于监控和控制被监控对象的位置。它可以帮助我们实现对特定区域内的自定义对象进行实时检测、定位与跟踪。本文介绍了一种基于YOLOv8 OpenVINO2023 QT5 联合打造的实时高效、多线程、自定义对…

Keepalived简介以及常见用途

一、Keepalived 简介 Keepalived 是一个高可用性&#xff08;HA&#xff09;解决方案&#xff0c;主要用于实现 Linux 系统的负载均衡和故障转移。它最初设计用于与 LVS&#xff08;Linux Virtual Server&#xff09;一起使用&#xff0c;但也可以独立使用&#xff0c;主要功能…

0815,析构函数,拷贝构造函数,赋值运算符函数

来自同济医院的问候 目录 01&#xff1a;对象创建 001.cc 003size.cc 02&#xff1a;对象销毁 004pointer.cc 005destroytime.cc 03&#xff1a;本类型对象的复制 3.1 拷贝构造函数 006cp.cc 007cptime.cc 008recursion.cc 009rightleft.cc 3.2 赋值运算符函数 …

8.15 Day20 Windows服务器(Windows service 2008 R2)上域的搭建 (3)

1、域策略配置 1.1 DC服务端的策略配置 1.1.1 下放权限 由于各部门经理的电脑上并不存在对应的工具&#xff0c;即便授予权限也无法对各自部门进行管理 如果经理只有几个&#xff0c;管理员可以一一为其配置&#xff0c;但如果一个公司有几十个经理&#xff0c;则会变得相当冗…

测试用例的设计

*涉及概念来源于《软件测试的艺术》 目录 一、为什么要设计测试用例&#xff1f; 二、黑盒测试与白盒测试介绍 三、测试用例常见设计方法 1.黑盒测试(功能测试) 2.白盒测试(结构测试) 四、测试策略 五、测试用例怎么写 一、为什么要设计测试用例&#xff1f; 由于时间…

C语言传递指针给函数

C 语言允许您传递指针给函数&#xff0c;只需要简单地声明函数参数为指针类型即可。 下面的实例中&#xff0c;我们传递一个无符号的 long 型指针给函数&#xff0c;并在函数内改变这个值 实例1&#xff1a;获取系统的时间值 能接受指针作为参数的函数&#xff0c;也能接受数…

【Vue3】路由Params传参

【Vue3】路由Params传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…

Vue2移动端(H5项目)项目基于vant封装图片上传组件(支持批量上传、单个上传、回显、删除、预览、最大上传数等功能)---解决批量上传问题

一、最终效果 二、参数配置 1、代码示例&#xff1a; <t-uploadfileList"fileList":showFileList"showFileList"showFile"showFile":showFileUrl"showFileUrl"/>2、配置参数&#xff08;TUpload Attributes&#xff09;继承va…

vulnhub系列:DC-1

vulnhub系列&#xff1a;DC-1 靶机下载 一、信息收集 nmap 扫描存活&#xff0c;根据 mac 地址寻找 IP nmap 192.168.23.0/24nmap 扫描端口 nmap 192.168.23.141 -p- -Pn -sV -Odirsearch 目录扫描 python3 dirsearch.py -u http://192.168.23.141/访问80端口 查看 wappa…