skimage( scikit-image)库学习04

1. 图像形变与缩放

图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。

1.1 图像形变

改变图像尺寸 resize

格式: skimage.transform.resize(imageoutput_shape)

              image: 需要改变尺寸的图片

              output_shape: 新的图片尺寸      

from skimage import transform,data
import matplotlib.pyplot as plt
img = data.camera()
dst=transform.resize(img, (80, 60))
plt.figure('resize')

plt.subplot(121)
plt.title('before resize')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('before resize')
plt.imshow(dst,plt.cm.gray)

plt.show()

2 按比例缩放rescale

函数格式: skimage.transform.rescale(image, scale[, ...])

scale参数可以是单个float数,表示缩放的倍数,也可以是一个float型的tuple,如[0.2,0.5],表示将行列数分开进行缩放

from skimage import transform, data
img = data.camera()
print(img.shape)
print(transform.rescale(img, 0.1).shape)    #缩小为原来图片大小的0.1倍
print(transform.rescale(img, [0.5,0.25]).shape)   # 缩小为原来图片行数一半,列数四分之一
print(transform.rescale(img, 2).shape)   #放大为原来图片大小的2倍

3 旋转 rotate

格式: skimage.transform.rotate(image, angle[, ...],resize=False)

             angle参数是个float类型数,表示旋转的度数

             resize用于控制在旋转时,是否改变大小 ,默认为False

from skimage import transform,data
import matplotlib.pyplot as plt
img = data.camera()
print(img.shape)  #图片原始大小
img1=transform.rotate(img, 60) #旋转90度,不改变大小 
print(img1.shape)
img2=transform.rotate(img, 30,resize=True)  #旋转30度,同时改变大小
print(img2.shape)   

plt.figure('resize')

plt.subplot(121)
plt.title('rotate 60')
plt.imshow(img1,plt.cm.gray)

plt.subplot(122)
plt.title('rotate  30')
plt.imshow(img2,plt.cm.gray)

plt.show()

reference: https://www.cnblogs.com/denny402/p/5124402.html

 

 

 

你可能感兴趣的:(图像处理)