码迷,mamicode.com
首页 > 编程语言 > 详细

python数字图像处理(5):图像的绘制

时间:2016-01-11 22:16:30      阅读:1013      评论:0      收藏:0      [点我收藏+]

标签:

实际上前面我们就已经用到了图像的绘制,如:

io.imshow(img)  

这一行代码就是得利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据。要显示绘制的图片,我们可以调用show()函数来进行显示,但进行练习的时候,一般我们可以省略show()函数,也能自动显示出来。

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

显示为:

技术分享

可以看到,类型是‘matplotlib.image.AxesImage‘,它除了图像本身信息,还有坐标尺等其它信息。如果要同时显示两张图片,那么在显示第二张图片的时候,会把第一张图片覆盖掉。

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

import matplotlib.pyplot as plt

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

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

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
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)

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

技术分享

两种书写方法效果是一样的,你喜欢哪种就用哪种!!

除了使用matplotlib库来绘制图片,skimage还有另一个模块ImageViewer,也可以显示图片。

它是利用Qt工具来创建一块画布,从而在画布上绘制图像。

例:

from skimage import data
from skimage.viewer import ImageViewer

img = data.coins()
viewer = ImageViewer(img)
viewer.show()

 

python数字图像处理(5):图像的绘制

标签:

原文地址:http://www.cnblogs.com/denny402/p/5122594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!