当前位置: 首页 > news >正文

【Python】python读取,显示,保存图像的几种方法

一、PIL:Python Imaging Library(pillow)

PIL读取图片不直接返回numpy对象,可以用numpy提供的函数np.array()进行转换,亦可用Image.fromarray()再从numpy对象转换为原来的Image对象,读取,显示,保存以及数据格式转换方法见如下代码:

from PIL import Image
import numpy as npimagepath = 'img.jpg' 
image = Image.open(imagepath)
image.show()
image.save('img1.jpg') # 图片保存在项目文件夹下

二,Matplotlib

读取,显示,保存方法见如下代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimgimagepath = 'img.jpg'
image = mpimg.imread(imagepath)
# 显示图片
plt.imshow(image)
# 保存文件
mpimg.imsave("cat1.jpg", image)

三,OpenCV

1.直接将图像显示在窗口中,并保存。

import cv2
import matplotlib.pyplot as pltimagepath = 'img.jpg'
image = cv2.imread(imagepath)# 保存图片
cv2.imwrite("cat2.jpg", image)# 显示图片
cv2.imshow('bgrImage', image) # 对窗口进行命名并显示
cv2.waitKey()
cv2.destroyAllWindows()

 

2.放置在画布中显示

import cv2
import matplotlib.pyplot as plt# 设置图片路径
imagepath = 'img.jpg'
image = cv2.imread(imagepath)# 将BGR图像转换为RGB
img_1 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 显示图形
plt.subplot() # 直接指定划分方式和位置
plt.imshow(image)    #显示图像
plt.title('噪声图像')    # 设置标题
plt.xticks([]), plt.yticks([])    # 设置坐标轴,参数[]是不显示坐标轴
plt.show()

 由于opencv默认读取图片用的是BGR通道,所以后续处理如果用RGB通道,如matplotlib就是采用的RBG通道,则需要进行色彩转换,否则会因为不兼容导致色彩出现偏差,所以可以加上这一行代码 :

image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB),

 具体原因见我的一篇博客:【Bug】当用opencv库的imread()函数读取图像,用matplotlib库的plt.imshow()函数显示图像时,图像色彩出现偏差问题的解决方法-CSDN博客

 当要显示多张图片的时候,需要用plt.subplot()函数对画布区域进行划分,如果没有指定参数,则默认为一个子图。详细用法见我的博客:【Python】Matplotlib-多张图像的显示-CSDN博客

显示效果如下: 

 

http://www.lryc.cn/news/227366.html

相关文章:

  • k8s系列-kuboard 该操作平台的使用操作
  • 基于讯飞星火大语言模型开发的智能插件:小策问答
  • 笔记:AI量化策略开发流程-基于BigQuant平台(二)
  • 100127. 给小朋友们分糖果 II
  • 【2】Spring Boot 3 项目搭建
  • 【第七章】软件设计师 之 程序设计语言与语言程序处理程序基础
  • 如何判断一个角是否大于180度(2)
  • ASAM OpenDRIVE V1.7协议超详解(一)
  • springboot的配置信息的设置和读取(application.properties/application.yml)
  • Deepsort项目详解
  • C语言证明一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数
  • Python 的 datetime 模块
  • Termius for Mac:掌控您的云端世界,安全高效的SSH客户端
  • Ubuntu 下监控并自动重启网卡
  • 377. 组合总和 Ⅳ
  • 【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
  • C语言进阶
  • Linux之gdb
  • 100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?
  • Leetcode—680.验证回文串II【简单】
  • Redis五种数据类型及命令操作(二)
  • 低代码信创开发核心技术(三):MDA模型驱动架构及元数据系统设计
  • HslCommunication模拟西门子读写数据
  • 多测师肖sir_高级金牌讲师_ui自动化po框架版本02
  • 线性判别分析(Linear Discriminant Analysis,LDA)
  • git的分支及标签使用及情景演示
  • 深度解析找不到msvcp120.dll相关问题以及解决方法
  • SQL Server 2022 安装步骤——SQL Server设置身份验证教程
  • Maven各方面配置好了却无法显示版本
  • Jdk 1.8 for mac 详细安装教程(含版本切换)