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

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

一、PIL:Python Imaging Library(pillow)

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

from PIL import Image
import numpy as np

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

二,Matplotlib

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

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

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

三,OpenCV

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

import cv2
import matplotlib.pyplot as plt

imagepath = '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博客

显示效果如下: 

 

相关文章:

  • 离线环境通过脚本实现服务器时钟同步(假同步)
  • mysql8安装和驱动jar包下载
  • 很多个pdf怎么合并在一起?
  • 力扣labuladong——一刷day28
  • Scala爬虫如何实时采集天气数据?
  • 暴力递归转动态规划(十五)
  • Linux常用命令:find、grep、vim、cat、less、more
  • 【 云原生 | K8S 】Kubernetes 概述
  • 第一章 Object-XML 映射简介
  • 金融信贷行业如何准确——大数据精准定位获客渠道
  • hutool ExcelUtil导出excel二级表头
  • UML/SysML建模工具更新(2023.10)(1)StarUML、Software Ideas Modeler
  • 【ubuntu20.04】win10安装ubuntu20.04双系统
  • 便捷Benchmark.sh 自动匹配workload(自用)
  • 算法工程师护城河
  • 利用Ansible实现批量Linux服务器安全配置
  • PanNet: A deep network architecture for pan-sharpening(ICCV 2017)
  • 有关队列内存超限问题bfs()(待解决)
  • 在 React 中选择使用 JSX 或 JavaScript
  • 2311d游戏引擎适配ios
  • 莫高义在第四届中国新闻发言人论坛开幕式上的致辞
  • 价格周报|本周猪价继续下探,机构预计今年猪价中枢有支撑
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:机器人行业没包袱,很多事都能从零开始
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • 美国务卿会见叙利亚外长,沙特等国表示将支持叙利亚重建