python-matplotlib 图像处理

1.显示图片

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

picture = mpimg.imread('znj.jpg') # 读取和代码处于同一目录下的图片
plt.imshow(picture) # 显示图片
plt.axis('on') # 显示坐标轴
plt.show() #因为idle是pycharm所以多一行显示命令

效果图:

在这里插入图片描述

2.显示RGB某个通道

首先要明白array的格式:

以一张mn3的图片为例

'''[[[R11,G11,B11],[R12,G12,B12]...[R1n,G1n,B1n]]
     [R21,G21,B21],[R22,G22,B22]...[R2n,G2n,B2n]]
            .           .               .      
            .           .               .               
            .           .               .
     [Rm1,Gm1,Bm1],[Rm2,Gm2,Bm2]...[Rmn,Gmn,Bmn]]]

'''
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

picture = mpimg.imread('znj.jpg')  # 读取和代码处于同一目录下的图片
lena1 = picture*[0,0,1]   # 显示图片的一个通道
lena2 = picture*[1,0,0]
lena3 = picture*[0,1,0]


plt.imshow(lena1)  # 显示图片
plt.axis('on')  # 显示坐标轴
plt.show()  #因为idle是pycharm所以多一行显示命令

plt.imshow(lena2)  # 显示图片
plt.axis('on')  # 显示坐标轴
plt.show()  #因为idle是pycharm所以多一行显示命令

plt.imshow(lena3)  # 显示图片
plt.axis('on')  # 显示坐标轴
plt.show()  #因为idle是pycharm所以多一行显示命令

效果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.RGB转灰度

方法一:

def rgb2gray1(rgb,m,n):
   gray = np.zeros(shape=(m,n))
   for x in range(0,m):
       for y in range(0,n):
           gray[x][y] = (rgb[x][y][0]*299 + rgb[x][y][1]*587 + rgb[x][y][2]*114 + 500) / 1000
   return gray
m = picture.shape[0]
n = picture.shape[1]

gray_pro = rgb2gray1(picture,m,n)

plt.imshow(gray_pro,cmap = plt.get_cmap('gray'))
plt.axis('on')  # 显示坐标轴
plt.show()

方法二:(最佳方案,运行速度快很多)

def rgb2gray2(rgb):
    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2] #数组切片
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
    return gray

gray_pro = rgb2gray2(picture)

plt.imshow(gray_pro,cmap = plt.get_cmap('gray'))
plt.axis('on')  # 显示坐标轴
plt.show()

效果图:

在这里插入图片描述

4.保存图片

plt.savefig('D:\\Mr.Zheng\\2.photo\\znj.jpg') #两个\防止编译器寻找转义字符
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Greif_Hairline

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值