圖像處理庫Skimage安裝與使用

scikit-image是基于scipy的一款圖像處理包,它將圖片作為numpy數(shù)組進行處理,是非常好的數(shù)字圖像處理工具。其全稱是scikit-image SciKit (toolkit for SciPy) ,對scipy.ndimage進行了擴展,提供了更多的圖片處理功能。
skimage包由許多的子模塊組成,各個子模塊提供不同的功能。主要子模塊如下:

子模塊名稱 主要實現(xiàn)功能
io 讀取、保存和顯示圖片或視頻
data 提供一些測試圖片和樣本數(shù)據(jù)
color 顏色空間變換
filters 圖像增強、邊緣檢測、排序濾波器、自動閾值等
draw 操作于numpy數(shù)組上的基本圖形繪制,包括線條、矩形、圓和文本等
transform 幾何變換或其它變換,如旋轉(zhuǎn)、拉伸和拉東變換等
morphology 形態(tài)學(xué)操作,如開閉運算、骨架提取等
exposure 圖片強度調(diào)整,如亮度調(diào)整、直方圖均衡等
feature 特征檢測與提取等
measure 圖像屬性的測量,如相似性或等高線等
segmentation 圖像分割
restoration 圖像恢復(fù)
util 通用函數(shù)

官網(wǎng)

安裝

pip install scikit-image

使用Skimage

1、讀取圖像

from skimage import io
img = io.imread('test.png', as_gray=False)  # 第一個參數(shù)是文件名可以是網(wǎng)絡(luò)地址,第二個參數(shù)默認為False,True時為灰度圖

注意:skimage的圖片格式是(height,width,channel)

查看image文件的信息

print(type(img))  #顯示類型
print(img.shape)  #顯示尺寸
print(img.dtype)   #數(shù)據(jù)類型
print(img.shape[0])  #圖片高度
print(img.shape[1])  #圖片寬度
print(img.shape[2])  #圖片通道數(shù)
print(img.max())  #最大像素值
print(img.min())  #最小像素值
print(img.mean()) #像素平均值

skimage讀出來的圖片可以直接img[0][0]獲得,但是一定記住它的格式.

print(img[200][100])

skimage.io.imread打開的圖片類型為np數(shù)組, 值為0-255,尺寸為 H,W,C,resize后值為0-1

image = transform.resize(img, (100, 200), order=1)
print(skimage.img_as_float(image))   # img_as_float可以把image轉(zhuǎn)為double,即float64 

2、圖像顯示

方法一:skimage.io.imshow()顯示圖像

from skimage import io,data
import matplotlib.pyplot as plt
img = data.coffee()
io.imshow(img)  # 顯示圖片
#io.imsave('test1.jpg', img) # 保存圖片
plt.show()

方法二:skimage.viewer.ImageViewer()顯示圖像

from skimage import io, data
from skimage.viewer import ImageViewer
img = data.coffee()
viewer = ImageViewer(img)
viewer.show()

skimage程序自帶了一些示例圖片,如果我們不想從外部讀取圖片,就可以直接使用skimage.data的示例圖片。

3、圖像像素訪問

圖片讀入程序中后,是以numpy數(shù)組存在的。因此對numpy數(shù)組的一切功能,對圖片也適用。對數(shù)組元素的訪問,實際上就是對圖片像素點的訪問。
輸出小貓圖片的G通道中的第20行30列的像素值

from skimage import io, data
import matplotlib.pyplot as plt
img = data.chelsea()
pixel = img[20,30,1]
print(pixel)

紅色單通道訪問

from skimage import io, data
import matplotlib.pyplot as plt
img = data.coffee()
R = img[:,:,0]
print(R)
io.imshow(R)
plt.show()

4、圖像裁剪

通過對數(shù)組的裁剪,就可以實現(xiàn)對圖片的裁剪。

from skimage import io, data
import matplotlib.pyplot as plt
img = data.coffee()
roi = img[80:180,100:200,:]
print(roi)
io.imshow(roi)
plt.show()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容