(P4)Python plt显示和保存图像(cv2、Image)

Python plt显示图片

概述

对这篇博客内容的最最简要的总结,便于快速抓要点

# 显示曲线
plt.plot(x,y)
# 显示图像
plt.imshow(image)
# 显示曲线/图片时需要的一行。本地可以显示,服务器不太行
plt.show() 
plt.savefig('xx.png') # 保存图片 fig.savefig('xx.png') 功能相同
# 保存图片在本地需要写明图片完整目录,服务器中默认保存在当前执行目录

一、绘制曲线并显示 plt.plot

以下是一张图中包含多张小图 的三种不同写法的汇总和拆解。

汇总

plt.subplot(221)
plt.plot(x, y)

fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax1.plot(x, y)

fig = plt.figure(figsize=(6, 3)) # 指定画图的大小
ax = fig.add_subplot(1, 2, 1)
ax.plot(x, y)

写法一

plt.subplot(221)
plt.plot(x, x)
plt.show()  /  %matplotlib inline # %的写法只在Jupyter中生效,见文末附录说明
import numpy as np  
import matplotlib.pyplot as plt  
x = np.arange(1, 101)  
#作图1
plt.subplot(221)  
plt.plot(x, x)  
#作图2
plt.subplot(222)  
plt.plot(x, -x)  
 #作图3
plt.subplot(223)  
plt.plot(x, x ** 2)  
plt.grid(color='r', linestyle='--', linewidth=1, alpha=0.3)
#作图4
plt.subplot(224)  
plt.plot(x, np.log(x))  
plt.show()  # 删除本行,增加%matplotlib inline 也可以显示出图像 

在这里插入图片描述

写法二

fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax1.plot(x, x)
plt.show() 
import numpy as np  
import matplotlib.pyplot as plt

x = np.arange(1, 101)  
#划分子图
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]


#作图1
ax1.plot(x, -x)  
#作图2
ax2.plot(x, x)
 #作图3
ax3.plot(x, x ** 2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
#作图4
ax4.plot(x, np.log(x))  
plt.show() 

在这里插入图片描述

写法三

fig = plt.figure(figsize=(6, 3)) # 指定画图的大小
ax = fig.add_subplot(1, 2, 1)
ax.plot(x, y)
plt.show() 
import numpy as np
import matplotlib.pyplot as plt
# %matplotlib inline

fig = plt.figure(figsize=(6, 3))
ax = fig.add_subplot(1, 2, 1)
x = np.linspace(-5, 5, 100)
y = x**2
ax.plot(x, y, 'r-')

ax = fig.add_subplot(1, 2, 2)
x = np.linspace(-5, 5, 100)
y = x**3
ax.plot(x, y, 'r-')

plt.show() 

在这里插入图片描述

二、打开图片并显示 plt.imshow

已知的读取图片方式有两种:cv2、Image,初略讲解如下,有需要更多讲解的再单独整合。

写法一 cv2

参考资料
opencv 因为历史原因, 读入的图片的格式是BGRmatplotlib的图片格式默认是RGB格式的。所以,当用cv2读入图片然后用matplotlib显示的时候,R通道变成了B通道, B通道变成了R通道, 所以显示会很阴间。如果想要正确显示图像,就需要使用cvtColor进行颜色空间的转换,从BGR转换为RGB。

关键代码

image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
fig, ax = plt.subplots(1,2)
ax[0].imshow(image)
cv2.imwrite("1.jpg",image) # 保存图片

举例

import cv2
import matplotlib.pyplot as plt
image_path = r"C:\\Users\\shmily\\Desktop\\file1.jpg"
image = cv2.imread(image_path)
h, w, _ = image.shape
image_size = 448
img = cv2.resize(image, dsize=(image_size, image_size), interpolation=cv2.INTER_LINEAR)
h1, w1, _ = img.shape
print(h,w,h1,w1)

fig, ax = plt.subplots(1,2)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 	# 改变显示的颜色
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
ax[0].imshow(image) # ,cmp='gray')
ax[1].imshow(img)
plt.show()

不进行 cv2.cvtColor 的结果

在这里插入图片描述

进行了颜色转变的结果
在这里插入图片描述

写法二 Image

关键代码

img = np.array(Image.open(img_path)) 
plt.figure()
plt.imshow(img)

举例

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img_path = r"C:\\Users\\shmily\\Desktop\\file1.jpg"
img = np.array(Image.open(img_path)) 
plt.figure()
plt.imshow(img)
plt.show()

附录

1、%matplotlib inline 说明

在这里插入图片描述

2、随手补充内容

隐藏坐标系

plt.axis('off')
  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值