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

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()

输出结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Delphi】中多显示器操作基本知识点

提要: 目前随着计算机的发展,4K显示器已经逐步在普及,笔记本的显示器分辨率也都已经超过2K,多显示器更是普及速度很快。本文介绍下Delphi中操作多显示器的基本知识点(Windows系统),这些知识点在…

【Django开发】前后端分离django美多商城项目第1篇:欢迎来到美多 项目主要页面介绍【附代码文档】

本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…

大语言模型的简易可扩展增量预训练策略

前言 原论文:Simple and Scalable Strategies to Continually Pre-train Large Language Models翻译文件已整理至Github项目Some-Paper-CN,欢迎大家Star! 摘要 大语言模型(LLMs)通常需要在数十亿个tokens上进行预训…

Apache-JMeter压测工具教程

下载安装 《JMeter官网下载》 下载完成后,找个文件夹进行解压 配置环境变量 JAVA_HOME(如果是JAVA8还需要配置CLASSPATH)、JMETER_HOME JMETER_HOME修改bin目录下的jmeter.properties文件编码为UTF-8 5.6.3这个版本encoding已经默认为UT…

【MySQL】SQL语句执行流程

目录 一、连接器 二、 查缓存 三、分析器 四、优化器 五、执行器 一、连接器 学习 MySQL 的过程中,除了安装,我们要做的第一步就是连接上 MySQL 在一开始我们都是先使用命令行连接 MySQL mysql -h localhost -u root -p 你的密码 使用这个命令…

基于Crontab调度,实现Linux下的定时任务执行。

文章目录 引言I 预备知识Crontab的基本组成Crontab的配置文件格式Crontab的配置文件Crontab不可引用环境变量杀死进程命令II Crontab实践案例Crontab工具的使用重启tomcat服务每分钟都打印当前时间到一个文件中30s执行一次III 常见问题并发冗余执行任务&& 和|| 和 ;的区…

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication,网页即时通信)于2011年6月1日开源,并被纳入万维网联盟的W3C推荐标准,它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台:可以在Web,Android、…

Windows下pip install mysqlclient安装失败

有时候安装mysqlclient插件报如下错误 提示先安装mysqlclient的依赖wheel文件 下载链接(必须对应版本,python3.6版本对1.4.4版本) 如下选择历史版本 mysqlclient官网 https://pypi.org/project/mysqlclient/python3.6对应版本 https://pypi.org/project/mysqlcl…

Unity3D 自定义窗口

Unity3D 自定义窗口的实现。 自定义窗口 Unity3D 可以通过编写代码,扩展编辑器的菜单栏和窗口。 简单的功能可以直接一个菜单按钮实现,复杂的功能就需要绘制一个窗口展示更多的信息。 编辑器扩展的脚本,需要放在 Editor 文件夹中。 菜单栏…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月19日新模型预测第61弹

经过60期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,60期一共只错了6次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部…

Ubuntu 22.04 安装 MySQL 8

Ubuntu 22.04 安装 MySQL 8 本文描述了Ubuntu安装MySQL 8的方法 CentOS7 的安装方法点击此处跳转 Windows 的安装方法点击此处跳转 Docker 的安装方法点击此处跳转 正文开始: 在一切开始之前,建议先切换到root #输入下方名,然后输入当…

openGauss 6.0安装过程解除对root用户依赖之gs_preinstall

目录 1.执行前提条件 1.1设置OS参数: 1.2定时任务权限 1.3 修改最大文件描述符 2.切换至omm用户,执行preinstall 3.source环境变量 4.执行gs_install 在给客户部署业务系统时,由于openGauss数据库的预安装过程需要用到root用户执行&am…

uniapp left right 的左右模态框

标题 这是组件 <template><div class"content-wrapper"><divv-for"(vla, i) in products":key"i":class"[content-page, getPageClass(i)]"><slot :data"vla"><!-- 用户自定义的内容 --><…

微信小程序中实现自动滚动

使用scroll-view组件的scroll-into-view属性&#xff1a; <scroll-view class"container" scroll-y"{{true}}" scroll-into-view"recordBottomScroll"><view class"text_style" style"color: #252526;">{{te…

LAMM: Label Alignment for Multi-Modal Prompt Learning

系列论文研读目录 文章目录 系列论文研读目录文章题目含义AbstractIntroductionRelated WorkVision Language ModelsPrompt Learning MethodologyPreliminaries of CLIPLabel AlignmentHierarchical Loss 分层损失Parameter Space 参数空间Feature Space 特征空间Logits Space …

JavaScript语法基础之常量与变量

目录 语法基础 1.语法简介 2 常量与变量 2.1 变量 2.1.1 变量的命名 2.1.2. 变量的使用 2.2. 常量 语法基础 注&#xff1a;由于大部分编程语言语法都差不多&#xff0c;这里讲完 PHP 部分不再讲述。 调试语句&#xff1a;prompt、alert、document.write(a)、console.l…

OSL 冠名赞助Web3峰会 “FORESIGHT2024”圆满收官

OSL 望为香港数字资产市场发展建设添砖加瓦 &#xff08;香港&#xff0c;2024 年 8 月 13 日&#xff09;- 8 月 11 日至 12 日&#xff0c; 由 香港唯一专注数字资产的上市公司 OSL 集团&#xff08;863.HK&#xff09;冠名赞助&#xff0c;Foresight News、 Foresight Ventu…

【高阶数据结构】图

图 1. 图的基本概念2. 图的存储结构2.1 邻接矩阵2.2 邻接表2.3 邻接矩阵的实现2.4 邻接表的实现 3. 图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4. 最小生成树4.1 Kruskal算法4.2 Prim算法 5. 最短路径5.1 单源最短路径--Dijkstra算法5.2 单源最短路径--Bellman-Ford算…

【投融界-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

leetcode198打家劫舍

题目描述 LeetCode 第 198 题——打家劫舍&#xff08;House Robber&#xff09; 你是一个职业小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;这个地方所有的房屋都围成一圈&#xff0c;并且相邻的房屋有安全系统会相连&#xff0c;如果两间相邻的…