日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

怎么使用python处理数据类型及颜色空间转换

發布時間:2023/12/15 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 怎么使用python处理数据类型及颜色空间转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹“怎么使用python處理數據類型及顏色空間轉換”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用python處理數據類型及顏色空間轉換”文章能幫助大家解決問題。

一、圖像數據類型及轉換

在skimage中,一張圖片就是一個簡單的numpy數組,數組的數據類型有很多種,相互之間也可以轉換。這些數據類型及取值范圍如下表所示:

Data type Range
uint8 0 to 255
uint16 0 to 65535
uint32 0 to 232
float -1 to 1 or 0 to 1
int8 -128 to 127
int16 -32768 to 32767
int32 -231to 231- 1

一張圖片的像素值范圍是[0,255], 因此默認類型是unit8, 可用如下代碼查看數據類型:

fromskimageimportio,data
img=data.chelsea()
print(img.dtype.name)

在上面的表中,特別注意的是float類型,它的范圍是[-1,1]或[0,1]之間。一張彩色圖片轉換為灰度圖后,它的類型就由unit8變成了float

1、unit8轉float

fromskimageimportdata,img_as_float
img=data.chelsea()
print(img.dtype.name)
dst=img_as_float(img)
print(dst.dtype.name)

輸出:

uint8
float64

2、float轉uint8

fromskimageimportimg_as_ubyte
importnumpyasnp
img=np.array([0,0.5,1],dtype=float)
print(img.dtype.name)
dst=img_as_ubyte(img)
print(dst.dtype.name)

輸出:

float64
uint8

float轉為unit8,有可能會造成數據的損失,因此會有警告提醒。

除了這兩種最常用的轉換以外,其實有一些其它的類型轉換,如下表:

Function name Description
img_as_float Convert to 64-bit floating point.
img_as_ubyte Convert to 8-bit uint.
img_as_uint Convert to 16-bit uint.
img_as_int Convert to 16-bit int.

二、顏色空間及其轉換

如前所述,除了直接轉換可以改變數據類型外,還可以通過圖像的顏色空間轉換來改變數據類型。

常用的顏色空間有灰度空間、rgb空間、hsv空間和cmyk空間。顏色空間轉換以后,圖片類型都變成了float型。

所有的顏色空間轉換函數,都放在skimage的color模塊內。

例:rgb轉灰度圖

fromskimageimportio,data,color
img=data.lena()
gray=color.rgb2gray(img)
io.imshow(gray)

其它的轉換

用法都是一樣的,列舉常用的如下:

skimage.color.rgb2grey(rgb)

skimage.color.rgb2hsv(rgb)

skimage.color.rgb2lab(rgb)

skimage.color.gray2rgb(image)

skimage.color.hsv2rgb(hsv)

skimage.color.lab2rgb(lab)

實際上,上面的所有轉換函數,都可以用一個函數來代替

skimage.color.convert_colorspace(arr,fromspace,tospace)

表示將arr從fromspace顏色空間轉換到tospace顏色空間。

例:rgb轉hsv

fromskimageimportio,data,color
img=data.lena()
hsv=color.convert_colorspace(img,'RGB','HSV')
io.imshow(hsv)

在color模塊的顏色空間轉換函數中,還有一個比較有用的函數是

skimage.color.label2rgb(arr), 可以根據標簽值對圖片進行著色。以后的圖片分類后著色就可以用這個函數。

例:將lena圖片分成三類,然后用默認顏色對三類進行著色

fromskimageimportio,data,color
importnumpyasnp
img=data.lena()
gray=color.rgb2gray(img)
rows,cols=gray.shape
labels=np.zeros([rows,cols])
foriinrange(rows):
forjinrange(cols):
if(gray[i,j]<0.4):
labels[i,j]=0
elif(gray[i,j]<0.75):
labels[i,j]=1
else:
labels[i,j]=2
dst=color.label2rgb(labels)
io.imshow(dst)

總結

以上是生活随笔為你收集整理的怎么使用python处理数据类型及颜色空间转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。