中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么使用python處理數據類型及顏色空間轉換

發布時間:2022-06-29 14:30:03 來源:億速云 閱讀:305 作者:iii 欄目:開發技術

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

一、圖像數據類型及轉換

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

Data typeRange
uint80 to 255
uint160 to 65535
uint320 to 232
float-1 to 1 or 0 to 1
int8-128 to 127
int16-32768 to 32767
int32-231 to 231 - 1

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

from skimage import io,data
img=data.chelsea()
print(img.dtype.name)

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

1、unit8轉float

from skimage import data,img_as_float
img=data.chelsea()
print(img.dtype.name)
dst=img_as_float(img)
print(dst.dtype.name)

輸出:

uint8
float64

2、float轉uint8

from skimage import img_as_ubyte
import numpy as np
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 nameDescription
img_as_floatConvert to 64-bit floating point.
img_as_ubyteConvert to 8-bit uint.
img_as_uintConvert to 16-bit uint.
img_as_intConvert to 16-bit int.

二、顏色空間及其轉換

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

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

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

例:rgb轉灰度圖

from skimage import io,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

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

怎么使用python處理數據類型及顏色空間轉換

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

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

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

from skimage import io,data,color
import numpy as np
img=data.lena()
gray=color.rgb2gray(img)
rows,cols=gray.shape
labels=np.zeros([rows,cols])
for i in range(rows):
    for j in range(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處理數據類型及顏色空間轉換

關于“怎么使用python處理數據類型及顏色空間轉換”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

兴隆县| 涪陵区| 天水市| 彭泽县| 清新县| 上栗县| 伊吾县| 监利县| 花莲市| 靖安县| 青川县| 连南| 莱阳市| 鹤庆县| 陈巴尔虎旗| 会泽县| 河间市| 深州市| 淮安市| 普陀区| 阳谷县| 抚州市| 延津县| 齐河县| 北宁市| 石林| 天门市| 秦皇岛市| 延安市| 定陶县| 故城县| 金堂县| 晋州市| 象州县| 唐山市| 荣成市| 海晏县| 镇赉县| 和硕县| 吉林市| 峡江县|