资讯专栏INFORMATION COLUMN

python图像处理图象的制作详细说明

89542767 / 452人阅读

  此篇文章主要是给大家介绍了python图像处理图象的制作实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪


  文章正文


  事实上前边咱们就早已运用了图象的制作,如:


  io.imshow(img)


  这一行代码的本质是运用matplotlib包对图片开展制作,制作完成后,回到一个matplotlib类型的信息。因而,我们还可以这么写:


  import matplotlib.pyplot as plt
  plt.imshow(img)


  imshow()函数格式为:


  matplotlib.pyplot.imshow(X,cmap=None)


  X:要绘制的图像或数组。


  cmap:颜色图谱(colormap),默认绘制为RGB(A)颜色空间。


  其它可选的颜色图谱如下列表:

01.png

  用的比较多的有gray,jet等,如:


  plt.imshow(image,plt.cm.gray)
  plt.imshow(img,cmap=plt.cm.jet)


  在窗口上绘制完图片后,返回一个AxesImage对象。要在窗口上显示这个对象,我们可以调用show()函数来进行显示,但进行练习的时候(ipython环境中),一般我们可以省略show()函数,也能自动显示出来。


  from skimage import io,data
  img=data.astronaut()
  dst=io.imshow(img)
  print(type(dst))
  io.show()


  显示为:

02.png

  可以看到,类型是'matplotlib.image.AxesImage'。显示一张图片,我们通常更愿意这样写:


  import matplotlib.pyplot as plt
  from skimage import io,data
  img=data.astronaut()
  plt.imshow(img)
  plt.show()

  matplotlib是一个专业绘图的库,相当于matlab中的plot,可以设置多个figure窗口,设置figure的标题,隐藏坐标尺,甚至可以使用subplot在一个figure中显示多张图片。一般我们可以这样导入matplotlib库:


  from skimage import data
  import matplotlib.pyplot as plt
  img=data.astronaut()
  plt.figure(num='astronaut',figsize=(8,8))#创建一个名为astronaut的窗口,并设置大小
  plt.subplot(2,2,1)#将窗口分为两行两列四个子图,则可显示四幅图片
  plt.title('origin image')#第一幅图片标题
  plt.imshow(img)#绘制第一幅图片
  plt.subplot(2,2,2)#第二个子图
  plt.title('R channel')#第二幅图片标题
  plt.imshow(img[:,:,0],plt.cm.gray)#绘制第二幅图片,且为灰度图
  plt.axis('off')#不显示坐标尺寸
  plt.subplot(2,2,3)#第三个子图
  plt.title('G channel')#第三幅图片标题
  plt.imshow(img[:,:,1],plt.cm.gray)#绘制第三幅图片,且为灰度图
  plt.axis('off')#不显示坐标尺寸
  plt.subplot(2,2,4)#第四个子图
  plt.title('B channel')#第四幅图片标题
  plt.imshow(img[:,:,2],plt.cm.gray)#绘制第四幅图片,且为灰度图
  plt.axis('off')#不显示坐标尺寸
  plt.show()#显示窗口
  import matplotlib.pyplot as plt

03.png

  也就是说,我们绘图实际上用的是matplotlib包的pyplot模块。


  一、用figure函数和subplot函数分别创建主窗口与子图


  例:分开并同时显示宇航员图片的三个通道


  在照片制作环节中,大家用matplotlib.pyplot模块下的figure()函数公式来建立表明对话框,该函数的形式为:


  matplotlib.pyplot.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None)


  全部基本参数全是可供选择的,都是有初始值,因而启用该函数公式的时候可以完全没有任何基本参数,在其中:


  num:整型或字符型都能够。假如设为整型,则其整型数字代表窗口序号。假如设为字符型,则其字符串数组表明窗口名字。要用基本参数来取名对话框,假如两个窗口序号或名同样,则后窗口会遮盖前窗口。


  figsize:设定窗口大小。是一个tuple型整数金额,如figsize=(8,8)


  dpi:整型数据,表明窗口屏幕分辨率。


  facecolor:窗口背景色。


  edgecolor:窗口边框颜色。


  用figure()函数公式建立的对话框,只有表明一副照片,如果你想要表明多副照片,就需要把这个对话框再划分成好多个子图,在每一个子图上显示不同类型的照片。大家能使用subplot()函数公式来区分子图,函数公式形式为:


  matplotlib.pyplot.subplot(nrows,ncols,plot_number)


  nrows:子图的个数。


  ncols:子图的行数。


  plot_number:现阶段子图的序号。


  如:

  plt.subplot(2,2,1)


  则表示将figure窗口划分成了2行2列共4个子图,当前为第1个子图。我们有时也可以用这种写法:

  plt.subplot(221)


  两种写法效果是一样的。每个子图的标题可用title()函数来设置,是否使用坐标尺可用axis()函数来设置,如:


  plt.subplot(221)
  plt.title("first subwindow")
  plt.axis('off')


  二、用subplots来创建显示窗口与划分子图


  除了上面那种方法创建显示窗口和划分子图,还有另外一种编写方法也可以,如下例:


  import matplotlib.pyplot as plt
  from skimage import data,color
  img=data.immunohistochemistry()
  hsv=color.rgb2hsv(img)
  fig,axes=plt.subplots(2,2,figsize=(7,6))
  ax0,ax1,ax2,ax3=axes.ravel()
  ax0.imshow(img)
  ax0.set_title("Original image")
  ax1.imshow(hsv[:,:,0],cmap=plt.cm.gray)
  ax1.set_title("H")
  ax2.imshow(hsv[:,:,1],cmap=plt.cm.gray)
  ax2.set_title("S")
  ax3.imshow(hsv[:,:,2],cmap=plt.cm.gray)
  ax3.set_title("V")
  for ax in axes.ravel():
  ax.axis('off')

04.png

  fig.tight_layout()#自动调整subplot间的参数


  直接用subplots()函数来创建并划分窗口。注意,比前面的subplot()函数多了一个s,该函数格式为:


  matplotlib.pyplot.subplots(nrows=1,ncols=1)


  nrows:所有子图行数,默认为1。


  ncols:所有子图列数,默认为1。


  返回一个窗口figure,和一个tuple型的ax对象,该对象包含所有的子图,可结合ravel()函数列出所有子图,如:


  fig,axes=plt.subplots(2,2,figsize=(7,6))
  ax0,ax1,ax2,ax3=axes.ravel()


  创建了2行2列4个子图,分别取名为ax0,ax1,ax2和ax3,每个子图的标题用set_title()函数来设置,如:


  ax0.imshow(img)
  ax0.set_title("Original image")


  如果有多个子图,我们还可以使用tight_layout()函数来调整显示的布局,该函数格式为:


  matplotlib.pyplot.tight_layout(pad=1.08,h_pad=None,w_pad=None,rect=None)


  所有的参数都是可选的,调用该函数时可省略所有的参数。


  pad:主窗口边缘和子图边缘间的间距,默认为1.08


  h_pad,w_pad:子图边缘之间的间距,默认为pad_inches


  rect:一个矩形区域,如果设置这个值,则将所有的子图调整到这个矩形区域内。


  一般调用为:

  plt.tight_layout()#自动调整subplot间的参数


  三、其它方法绘图并显示


  除了使用matplotlib库来绘制图片,skimage还有另一个子模块viewer,也提供一个函数来显示图片。不同的是,它利用Qt工具来创建一块画布,从而在画布上绘制图像。


  例:


  from skimage import data
  from skimage.viewer import ImageViewer
  img=data.coins()
  viewer=ImageViewer(img)
  viewer.show()

05.png

  最后总结一下,绘制和显示图片常用到的函数有:


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128831.html

相关文章

  • python图像处理图象批量编辑

      此篇文章主要是给大家介绍了python图像处理之图象的批量编辑实例详细解读,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,愿大家多多的发展,尽快涨薪  文章正文  有的时候,不仅需要对一张照片予以处理,可能也会对一大批照片处理。此刻,我们通过循环系统去执行解决,还可以启用程序流程带有的照片结合去处理。  照片结合函数公式  skimage.io.ImageCollection(load...

    89542767 评论0 收藏0
  • pythonopencv图象高通滤波和低通滤波器范例编码

      文章主要是详细介绍了pythonopencv图像高通滤波和低通滤波器,此文经过案例编码为大家介绍得非常详尽,对大家学习培训和工作具有很强的参照参考意义,必须的小伙伴可以借鉴一下  序言  上一章大家反映了如何把图象机娘傅立叶变换,将图象由时域转换成时域,并把低频率挪动至图象核心。那样将低频率总厅后,就可以把图象的低频率和高频率分离,进而开展低通滤波器跟高通滤波的处理方法。  详细编码  低通滤...

    89542767 评论0 收藏0
  • PandasMatplotlib保存图型时纵坐标标识过长造成显示不全问题解决

      在使用matplotlib做图得时候,有时候会碰到绘图时显示不全和图片保存时不完美的难题,本文主要是为大家介绍了有关PandasMatplotlib保存图型时纵坐标标识过长造成显示不全问题解决方式,需用的小伙伴可以参考一下。  序言  这篇blog主要是处理在使用pandas制作图象并储存时,因为标识过长,造成纵坐标上标签显示不全问题。刚遇到困难的时候修改了一下下图片尺寸,然而并没有卵用,因此...

    89542767 评论0 收藏0
  • PHP 给图片制作水印方法

    摘要:我们经常能在图片上看到一些水印,一般分为图片文字或者是两种一起的结合。那么给图片加水印就非常有必要了。怎么用实现给图片加水印呢先来看看效果使用库使用库来实现效果图像处理和手册正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。 我们经常能在图片上看到一些水印,一般分为图片、文字或者是两种一起的结合。那为什么要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原作...

    sixgo 评论0 收藏0
  • Pygame精准检测图象撞击问题

      此篇文章主要是阐述了Pygame精准检测图象撞击,在使用Pygame写游戏时,有些人可能遇到2个Rect目标撞击可是目标中间也有室内空间间距问题,这儿,将教给大家用一个方法准确地检验图象撞击,需用的小伙伴可以借鉴一下  在使用Pygame写游戏时,有些人可能遇到2个Rect目标撞击可是目标中间也有室内空间间距问题,这儿,将教给大家用一个方法准确地检验图象撞击。  假定大家主要有两种图象(产品为...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<