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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章