空间转换怎么操作,什么软件能做到空间变换

首页 > 经验 > 作者:YD1662022-11-01 19:58:12

图1-18 从PIL的image对像转换为numpy ndarray对象

如下代码将展示如何将numpy ndarray转换为PIL image对象。运行代码后,会看到与图1-18相同的输出。

im = imread('../images/flowers.png') # read image into numpy ndarray with skimage im = Image.fromarray(im) # create a PIL Image object from the numpy ndarray im.show() # display the image with PIL Image.show() method1.5.2 基本的图像操作

不同的Python库都可以用于基本的图像操作。几乎所有库都以numpy ndarray存储图像(例如灰度图像的二维数组和RGB图像的三维数组)。彩色Lena图像的正xy方向(原点是图像二维数组的左上角)如图1-19所示。

空间转换怎么操作,什么软件能做到空间变换(5)

图1-19 Lena彩色图像的坐标方向

1.使用numpy数组的切片进行图像处理

如下代码显示了如何使用numpy数组的切片和掩模在Lena图像上创建圆形掩模:

lena = mpimg.imread("../images/lena.jpg") # read the image from disk as a numpy ndarray print(lena[0, 40]) # [180 76 83] # print(lena[10:13, 20:23,0:1]) # slicing lx, ly, _ = lena.shape X, Y = np.ogrid[0:lx, 0:ly] mask = (X - lx / 2) ** 2 (Y - ly / 2) ** 2 > lx * ly / 4 lena[mask,:] = 0 # masks plt.figure(figsize=(10,10)) plt.imshow(lena), plt.axis('off'), plt.show()

运行上述代码,输出结果如图1-20所示。

空间转换怎么操作,什么软件能做到空间变换(6)

图1-20 Lena图像的圆形掩模

简单的图像变形—使用交叉溶解的两个图像的α混合 如下代码展示了通过使用如下公式给出的两张图像numpy ndarrays的线性组合,如何从一张人脸图像(image1是梅西的脸)开始,以另一张人脸图像(image2是C罗的脸)结束。

空间转换怎么操作,什么软件能做到空间变换(7)

通过迭代地将α从0增加到1来实现图像的变形效果。

im1 = mpimg.imread("../images/messi.jpg") / 255 # scale RGB values in [0,1] im2 = mpimg.imread("../images/ronaldo.jpg") / 255 i = 1 plt.figure(figsize=(18,15)) for alpha in np.linspace(0,1,20): plt.subplot(4,5,i) plt.imshow((1-alpha)*im1 alpha*im2) plt.axis('off') i = 1 plt.subplots_adjust(wspace=0.05, hspace=0.05) plt.show()

运行上述代码,输出结果如图1-21所示,这是α-混合图像的序列。本书后续章节将介绍更加高级的图像变形技术。

2.使用PIL进行图像处理

PIL提供了许多进行图像处理的函数,例如,使用点变换来更改像素值或对图像实现几何变换。使用PIL进行图像处理之前,加载鹦鹉的PNG图像,如下面的代码所示:

im = Image.open("../images/parrot.png") # open the image, provide the correct path print(im.width, im.height, im.mode, im.format) # print image size, mode and format # 486 362 RGB PNG

接下来将介绍如何使用PIL执行不同类型的图像操作。

(1)裁剪图像。可以使用带有所需矩形参数的crop()函数从图像中裁剪相应的区域,如下面的代码所示。

im_c = im.crop((175,75,320,200)) # crop the rectangle given by (left, top,right, bottom) from the image im_c.show()

运行上述代码,输出结果如图1-21所示,此图即所创建的裁剪图像。

空间转换怎么操作,什么软件能做到空间变换(8)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.