问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用python显示一张图片

发布网友 发布时间:2022-04-23 05:39

我来回答

2个回答

热心网友 时间:2022-04-06 05:05

  在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片。本人偏爱 matpoltlib,因为它的语法更像 matlab。
  一、matplotlib
  1. 显示图片
  复制代码
  import matplotlib.pyplot as plt # plt 用于显示图片
  import matplotlib.image as mpimg # mpimg 用于读取图片
  import numpy as np
  lena = mpimg.imread('lena.png') # 读取和代码处于同一目录下的 lena.png
  # 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
  lena.shape #(512, 512, 3)
  plt.imshow(lena) # 显示图片
  plt.axis('off') # 不显示坐标轴
  plt.show()
  复制代码
  2. 显示某个通道
  复制代码
  # 显示图片的第一个通道
  lena_1 = lena[:,:,0]
  plt.imshow('lena_1')
  plt.show()
  # 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法:
  plt.imshow('lena_1', cmap='Greys_r')
  plt.show()
  img = plt.imshow('lena_1')
  img.set_cmap('gray') # 'hot' 是热量图
  plt.show()
  复制代码
  3. 将 RGB 转为灰度图
  matplotlib 中没有合适的函数可以将 RGB 图转换为灰度图,可以根据公式自定义一个:
  复制代码
  def rgb2gray(rgb):
  return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
  gray = rgb2gray(lena)
  # 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
  plt.imshow(gray, cmap='Greys_r')
  plt.axis('off')
  plt.show()
  复制代码
  4. 对图像进行放缩
  这里要用到 scipy
  复制代码
  from scipy import misc
  lena_new_sz = misc.imresize(lena, 0.5) # 第二个参数如果是整数,则为百分比,如果是tuple,则为输出图像的尺寸
  plt.imshow(lena_new_sz)
  plt.axis('off')
  plt.show()
  复制代码
  5. 保存图像
  5.1 保存 matplotlib 画出的图像
  该方法适用于保存任何 matplotlib 画出的图像,相当于一个 screencapture。
  plt.imshow(lena_new_sz)
  plt.axis('off')
  plt.savefig('lena_new_sz.png')
  5.2 将 array 保存为图像
  from scipy import misc
  misc.imsave('lena_new_sz.png', lena_new_sz)
  5.3 直接保存 array
  读取之后还是可以按照前面显示数组的方法对图像进行显示,这种方法完全不会对图像质量造成损失
  np.save('lena_new_sz', lena_new_sz) # 会在保存的名字后面自动加上.npy
  img = np.load('lena_new_sz.npy') # 读取前面保存的数组
  二、PIL
  1. 显示图片
  from PIL import Image
  im = Image.open('lena.png')
  im.show()
  2. 将 PIL Image 图片转换为 numpy 数组
  im_array = np.array(im)
  # 也可以用 np.asarray(im) 区别是 np.array() 是深拷贝,np.asarray() 是浅拷贝
  3. 保存 PIL 图片
  直接调用 Image 类的 save 方法
  from PIL import Image
  I = Image.open('lena.png')
  I.save('new_lena.png')
  4. 将 numpy 数组转换为 PIL 图片
  这里采用 matplotlib.image 读入图片数组,注意这里读入的数组是 float32 型的,范围是 0-1,而 PIL.Image 数据是 uinit8 型的,范围是0-255,所以要进行转换:
  import matplotlib.image as mpimg
  from PIL import Image
  lena = mpimg.imread('lena.png') # 这里读入的数据是 float32 型的,范围是0-1
  im = Image.fromarray(np.uinit8(lena*255))
  im.show()
  5. RGB 转换为灰度图
  from PIL import Image
  I = Image.open('lena.png')
  I.show()
  L = I.convert('L')
  L.show()

热心网友 时间:2022-04-06 06:23

用python显示一张图片方法如下:

import matplotlib.pyplot as plt # plt 用于显示图片

import matplotlib.image as mpimg # mpimg 用于读取图片

import numpy as nplena = mpimg.imread('lena.png') # 读取和代码处于同一目录下的 lena.png# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理

lena.shape #(512, 512, 3)plt.imshow(lena) # 显示图片plt.axis('off') # 不显示坐标轴

plt.show()

Python, 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。

Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土狗一般多大开始懂人性 如何训练 小土狗怎么训练才听话 新手训狗的好方法 跑跑卡丁车故事模式哪一关还海盗船长(人物)奖励的,骨灰玩家说下._百 ... 跑跑卡丁车手游被遗忘的炮塔的宝藏在哪_跑跑卡丁车手游被遗忘的炮塔的... 跑跑卡丁车手游在被遗忘的炮塔附近搜寻宝藏怎么做?遗忘炮塔宝藏攻略... 跑跑卡丁车手游被遗忘炮塔宝藏在哪 炮塔附近搜寻宝箱位置详解-新手攻略... 跑跑卡丁车被遗忘的炮塔附近宝藏在哪里_跑跑卡丁车被遗忘的炮塔附近宝藏... 跑跑卡丁车手游在遗忘的炮塔附近搜寻宝藏在哪 遗忘炮塔宝藏位置详解 迅捷路由器使用问题 ...MATLAB7.0的,程序总是在打开后一会,就自动关闭了。希望能帮忙哦,感... 参加社保情况怎么填写 限制性股票授予上市是利好吗? 怎么用python显示一张图片? 车载冰箱用LG压缩机好,还是斯科普压缩机好? 冰箱制冷压缩机好还是半导体好吗 车载冰箱与家用冰箱有哪些区别 车载冰箱断电后续冷时间长一些的冰箱该选哪一款? 什么是真正的车载冰箱?是不是压缩机制冷的车载冰箱?比较好的品牌有哪些... 车载冰箱,压缩机的好,还是半导体的好………? 车载冰箱哪种比较好? QQ号被人恶意举了? 车载冰箱哪一种比较好 QQ号被人恶意举报封了,能解吗? 压缩机冰箱与半导体冰箱的区别是什么,哪一种更好? 我QQ被人恶意举报,永久冻结了怎么找回来 半导体车载冰箱效果怎么样? QQ帐号被人恶意举报封号了怎么办? 车载冰箱哪种比较经济实惠? 如果我的QQ被别人恶意举报了,而且成功了。 特别影响我登QQ,该怎么办才能解除他恶意举报我的这个东 车载冰箱好用吗? 个人办理社保情况介绍 限售股上市流通对该股是利好还是利空? 在python Image中可以用show()来显示图片,但是显示以后,下面的代码就... 什么叫限售股解禁?是股市的利好还是利空? 个人身份参加社会保险 关于限制性股票授予完成的公告 是利好还是利空 python的PIL模块,为什么image.show()显示不了图片? 企业社保情况说明怎么写,格式是什么样的? Python里用tkinter.ttk.Treeview表格组件,怎么让其显示图片? 什么是限制性股票,限制性股票有哪些优缺点? 社会保险参保情况是什么意思 Python怎么获取HTML里的图片,并且显示出来 请问用python+Django如何显示图片呢?如何显示一个纯静态的HTMl?急_百 ... 怎么查社会保险缴纳情况 股市中的限制性股票指的是什么?限制性股票该如何理解? 参加社会保险的条件 限售股解禁对本股是利好还是利空,能解释解释吗?那么对股市是利好利 python PIL无法显示图片,也没有报错啊 使用Python爬虫下载图片,得到的图片不显示? 参加各项社会保险和缴纳社会保险费的书面情况