1. 圖像形變與縮放
圖像的形變與縮放,使用的是skimage的transform模塊,函數比較多,功能齊全。
1.1 圖像形變
改變圖像尺寸 resize
格式: skimage.transform.resize(image, output_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