数据类型与颜色空间转换
图像数据类型查看及转换
- 查看图像数据类型
from skimage import data,io
img=io.imread('c.jpg')
print(img.dtype.name)
显示效果输出:
- unit8转float,并打印像素值
from skimage import data,img_as_float
img=io.imread('c.jpg')
print(img.dtype.name)
dst=img_as_float(img)
print(dst.dtype.name)
print(img)
显示效果输出:
- float转uint8,并打印像素值
float转为unit8,有可能会造成数据的损失,因此会有警告提醒。
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)
print(img)
显示效果输出:
颜色空间转换
- Rgb转换灰度
from skimage import io,data,color
img=io.imread('c.jpg')
gray = color.rgb2gray(img)
io.imshow(gray)
显示效果:
- Rgb转换hsv
HSV是色相(Hue)、饱和度(Saturation)和亮度(Value)的缩写。
from skimage import io,data,color
img=io.imread('c.jpg')
gray=color.rgb2hsv(img)
io.imshow(gray)
显示效果:
- Rgb转换lab
Lab中l表示亮度,a表示红绿分量,b表示黄蓝分量。
from skimage import io,data,color
img=io.imread('c.jpg')
gray=color.rgb2lab(img)
io.imshow(gray)
- 灰度转换rgb
from skimage import io,data,color
img=io.imread('c.jpg')
gray=color.grey2rgb(img)
io.imshow(gray)
- Hsv转换rbg
from skimage import io,data,color
img=io.imread('c.jpg')
gray=color.hsv2rgb(img)
io.imshow(gray)
显示效果:
- Lab转换rbg(会出现红色提示但不用管)
from skimage import io,data,color
img=io.imread('c.jpg')
gray=color.lab2rgb(img)
io.imshow(gray)
效果显示:
- 以上转换都可用一句总结
skimage.color.convert_
colorspace(arr
, fromspace
, tospace
)
表示将arr从fromspace颜色空间转换到tospace颜色空间
例:rgb转hsv
from skimage import io,data,color
img=io.imread('c.jpg')
hsv=color.convert_colorspace(img,'RGB','HSV')
io.imshow(hsv)
显示效果:
对图片进行着色
skimage.color.label2rgb( ), 可以根据标签值对图片进行着色。创建一个灰度图像gray,并根据像素值将其分为三个类别(0、1、2)。然后,它使用color.label2rgb函数将类别标签转换为RGB图像,并使用io.imshow函数显示这个转换后的图像。
例:将图片分成三类,然后用默认颜色对三类进行着色
首先导入io模块用于图像读取,data模块用于获取示例图像,color模块用于颜色处理
from skimage import io,data,color
import numpy as np
使用io.imread从文件路径'c.jpg'读取图像
img=io.imread('c.jpg')
使用color.rgb2gray将RGB图像转换为灰度图像
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
使用color.label2rgb将类别标签转换为RGB图像,imshow显示图像
dst=color.label2rgb(labels)
io.imshow(dst)
显示效果: