pillow opencv matplotlib读写图片有什么区别

这篇具有很好参考价值的文章主要介绍了pillow opencv matplotlib读写图片有什么区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

from PIL import Image
import numpy as np
import cv2
from matplotlib import pyplot as plt

file_path = '1.png'

读彩色图像

区别:文章来源地址https://www.toymoban.com/news/detail-763939.html

  1. opencv-python读出来的是BGR颜色通道的
  2. PIL读出的是PIL类格式的,而cv和plt是numpy数组
# 读取彩色图像 都是H×W×C
img1 = cv2.imread(file_path)  # BGR
img2 = plt.imread(file_path)  # RGB
img3 = np.array(Image.open(file_path))  # RGB

BRG和RGB格式互转

# 用opencv-python
image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)

image_bgr = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2BGR)

# 利用数组切片 
# 因为shape是H×W×C,BGR倒着读就是RGB
image_rgb = image_bgr[:, :, ::-1] 

读灰色图像

区别:

  1. plt没法读取时设置读灰色图像,但是可以在plt.imshow()的时候设置按照灰度图显示
# 以灰度图方式读取 
img4 = cv2.imread(file_path, flags=cv.IMREAD_GRAYSCALE)
img6 = np.array(Image.open(file_path).convert("L"))

# img5 = plt.imread(file_path) 
# plt没法以灰度方式读取,只能在imshow的时候以灰度方式显示plt.imshow(a, cmap='viridis', interpolation='nearest')

opencv的flags参数

常数 效果
cv2.IMREAD_COLOR 1 读取图像时保留颜色通道(默认值)
cv2.IMREAD_GRAYSCALE 0 以灰度模式读取图像
cv2.IMREAD_UNCHANGED -1 以包含 alpha 通道的方式读取图像

保存图像

matplotlib:

plt保存原理是先创建画板,然后把图像绘制上去。

这会导致保存图像出现白边,以及像素大小与想要的大小不符的现象。不推荐使用!!

plt.imshow(image)
plt.savefig('output.png', bbox_inches='tight', transparent=True, dpi=300, figsize=(6, 4))

opencv:

简单好用

cv2.imwrite("output.jpg", img) # img是numpy数组

pillow:

必须先转PIL对象才能保存

# 使用PIL保存NumPy数组为图像
image = Image.fromarray(numpy_array)

# 保存图像
image.save("output.png")

 

显示图像

区别:

  1. PIL调用系统默认的图片查看工具
  2. opencv和matplotlib有自己的可视化工具,且matplotlib可以集成在Pycharm的SciView
# PIL 
image = Image.open("image.jpg")
image.show()

# opencv 
image = cv2.imread("image.jpg")
cv2.imshow("Image", image)
cv2.waitKey(0) # 修改等待时间可以用于展示视频帧
cv2.destroyAllWindows()

# matplotlib
plt.imshow(img)
plt.show()

到了这里,关于pillow opencv matplotlib读写图片有什么区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python的图像处理:OpenCV与Pillow

    Python是一个强大的编程语言,它在图像处理领域也发挥了广泛的作用。OpenCV和Pillow是Python图像处理领域的两个重要库,它们各自具有不同的特点和应用场景。本文将从背景、核心概念、核心算法原理、最佳实践、实际应用场景、工具和资源推荐等方面进行全面的讲解,帮助读

    2024年04月15日
    浏览(10)
  • 使用Python的Pillow库对图片进行格式转换和重命名

    Python 是一门功能强大的编程语言,广泛应用于科学计算、数据分析、机器学习等领域。随着互联网的发展和智能手机的普及,现在人们更加倾向于通过图片来表达自己的想法和情感。因此,在科研、工程和设计等领域,对于图片的处理也变得越来越重要。 Python 提供了多种图

    2024年02月08日
    浏览(8)
  • 【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片

    【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片

    目录 1 导入PIL模块(pillow) 1.1 PIL的全称:Python Imaging Library 1.2 导入PIL模块 1.2.1 可用的导入形式 1.2.2 常用的导入形式 1.2.3 PIL下面的常用子模块 2 PIL.Image的方法 (读入,生成和显示图片) 2.1 用 PIL.Image.open() 可以读入图片 2.1.1 基础语法 PIL.Image.open(path) 2.1.2 PIL.Image.open() 方法是

    2024年01月16日
    浏览(10)
  • OpenCV中的HoughLines函数和HoughLinesP函数到底有什么区别?

    OpenCV中的HoughLines函数和HoughLinesP函数到底有什么区别?

            基于OpenCV进行直线检测可以使用HoughLines和HoughLinesP函数完成的。这两个函数之间的唯一区别在于,第一个函数使用标准霍夫变换,第二个函数使用概率霍夫变换(因此名称为 P)。概率版本之所以如此,是因为它仅分析点的子集并估计这些点都属于同一条线的概率

    2024年02月07日
    浏览(6)
  • Matplotlib中的%matplotlib inline是什么

    %matplotlib是一个魔法函数(Magic Function),功能:内嵌画图。将matplotlib的图表直接嵌入到Notebook中,或使用指定的界面库显示图表(由参数指定)。inline就表示将图表嵌入到Notebook中。 IPython有一组预先定义好的魔法函数,可以通过命令行的语法形式来访问。 Magic Function分两种

    2024年02月15日
    浏览(7)
  • Python Matplotlib 中如何用 plt.savefig 存储图片

    Python Matplotlib 中如何用 plt.savefig 存储图片

    plt.show()展示图片的时候,截图进行保存,图片不是多么清晰 如何保存高清图也是一知识点 函数包名: import matplotlib.pyplot as plt 主要功能 :保存绘制数据后创建的图形。使用此方法可以将创建的图形保存 函数源码: (根据需要进行选择) 参数解释: 参数 描述 fname 指定格式

    2024年02月01日
    浏览(6)
  • 使用Python中的matplotlib将多个图片显示到一张图内

    使用Python中的matplotlib将多个图片显示到一张图内

    在我们写论文或是汇报时,经常需要整合所得到的可视化数据结果,插入我们的论文中。如下所示的情况,我们需要将四个相关的弹性模量预测结果在一张图里展示。 使用matplotlib库中的子图(subplot)功能可以轻松而高效地实现这一过程,避免繁琐地手动调节。 具体代码如下,

    2024年02月06日
    浏览(12)
  • FPGA-仿真读写bmp图片

    FPGA-仿真读写bmp图片

    最近想完成FPGA图像处理,由于没有开发板,就像通过仿真完成,之前像的是通过python 将图像转化为txt文本,最后利用verilog 读取txt文件导入,对像素点进行处理,然后将处理后像素数据写入txt,最后通过python转化为bmp位图,后来发现verilog可以直接读取bmp文件,并且将数据写入

    2023年04月12日
    浏览(9)
  • Python numpy库的应用、matplotlib绘图、opencv的应用
  • 【OpenCV 例程300篇】04. 用 matplotlib 显示图像(plt.imshow)

    【OpenCV 例程300篇】04. 用 matplotlib 显示图像(plt.imshow)

    专栏地址:『youcans 的 OpenCV 例程300篇 - 总目录』 01. 图像的读取(cv2.imread) 02. 图像的保存(cv2.imwrite) 03. 图像的显示(cv2.imshow) 04. 用 matplotlib 显示图像(plt.imshow) 函数 plt.imshow() 用于通过 matplotlib 库显示图像。 函数说明: matplotlib.pyplot.imshow(img[, cmap]) OpenCV 使用 BGR 格式

    2024年02月04日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包