溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現(xiàn)圖像的形變與縮放

發(fā)布時間:2022-06-29 09:30:55 來源:億速云 閱讀:300 作者:iii 欄目:開發(fā)技術

本篇內容主要講解“python怎么實現(xiàn)圖像的形變與縮放”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python怎么實現(xiàn)圖像的形變與縮放”吧!

skimage的transform模塊

圖像的形變與縮放,使用的是skimage的transform模塊,函數(shù)比較多,功能齊全。

1、改變圖片尺寸resize

函數(shù)格式為:

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

將camera圖片由原來的512*512大小,變成了80*60大小。從下圖中的坐標尺,我們能夠看出來:

python怎么實現(xiàn)圖像的形變與縮放

2、按比例縮放rescale

函數(shù)格式為:

skimage.transform.rescale(image,scale[,...])

scale參數(shù)可以是單個float數(shù),表示縮放的倍數(shù),也可以是一個float型的tuple,如[0.2,0.5],表示將行列數(shù)分開進行縮放

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)  #縮小為原來圖片行數(shù)一半,列數(shù)四分之一
print(transform.rescale(img, 2).shape)   #放大為原來圖片大小的2倍

結果為:

(512, 512)
(51, 51)
(256, 128)
(1024, 1024)

3、旋轉 rotate

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

angle參數(shù)是個float類型數(shù),表示旋轉的度數(shù)

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

顯示結果:

python怎么實現(xiàn)圖像的形變與縮放

4、圖像金字塔

以多分辨率來解釋圖像的一種有效但概念簡單的結構就是圖像金字塔。圖像金字塔最初用于機器視覺和圖像壓縮,一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低的圖像集合。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。當向金字塔的上層移動時,尺寸和分辨率就降低。

在此,我們舉一個高斯金字塔的應用實例,函數(shù)原型為:

skimage.transform.pyramid_gaussian(image, downscale=2)

downscale控制著金字塔的縮放比例

import numpy as np
import matplotlib.pyplot as plt
from skimage import data,transform
image = data.astronaut()  #載入宇航員圖片
rows, cols, dim = image.shape  #獲取圖片的行數(shù),列數(shù)和通道數(shù)
pyramid = tuple(transform.pyramid_gaussian(image, downscale=2))  #產生高斯金字塔圖像
#共生成了log(512)=9幅金字塔圖像,加上原始圖像共10幅,pyramid[0]-pyramid[1]
composite_image = np.ones((rows, cols + cols / 2, 3), dtype=np.double)  #生成背景
composite_image[:rows, :cols, :] = pyramid[0]  #融合原始圖像
i_row = 0
for p in pyramid[1:]:
    n_rows, n_cols = p.shape[:2]
    composite_image[i_row:i_row + n_rows, cols:cols + n_cols] = p  #循環(huán)融合9幅金字塔圖像
    i_row += n_rows
plt.imshow(composite_image)
plt.show()

python怎么實現(xiàn)圖像的形變與縮放

python怎么實現(xiàn)圖像的形變與縮放

上圖,就是10張金字塔圖像,下標為0的表示原始圖像,后面每層的圖像行和列變?yōu)樯弦粚拥囊话耄敝磷優(yōu)?

除了高斯金字塔外,還有其它的金字塔,如:

skimage.transform.pyramid_laplacian(image, downscale=2):

python怎么實現(xiàn)圖像的形變與縮放

到此,相信大家對“python怎么實現(xiàn)圖像的形變與縮放”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI