python数字图像处理数据类型及颜色空间转换

 更新时间:2022年06月28日 15:37:24   作者:denny402  
这篇文章主要为大家介绍了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)

在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图像数据类型颜色空间的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Python实现PPT合并小工具

    基于Python实现PPT合并小工具

    在日常工作和学习中,如果需要将多个PPT文件合并成一个文件,手动操作可能会非常繁琐和耗时,所以本文将使用Python制作一个简单的PPT合并小工具,希望对大家有所帮助
    2024-01-01
  • python基于pygame实现飞机大作战小游戏

    python基于pygame实现飞机大作战小游戏

    这篇文章主要为大家详细介绍了python基于pygame实现飞机大作战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Python 实现王者荣耀中的敏感词过滤示例

    Python 实现王者荣耀中的敏感词过滤示例

    今天小编就为大家分享一篇Python 实现王者荣耀中的敏感词过滤示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 配置python连接oracle读取excel数据写入数据库的操作流程

    配置python连接oracle读取excel数据写入数据库的操作流程

    这篇文章主要介绍了配置python连接oracle,读取excel数据写入数据库,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 一篇文章带你了解python异常基础

    一篇文章带你了解python异常基础

    今天小编就为大家分享一篇关于Python中的异常介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-08-08
  • python 切片和range()用法说明

    python 切片和range()用法说明

    首先需要明白,可迭代对象,按照正数索引(正序)是从0开始的,按照负数索引(逆序)是从-1开始的
    2013-03-03
  • Python使用smtplib库发送电子邮件

    Python使用smtplib库发送电子邮件

    Python提供了smtplib库,用于发送电子邮件,本文将详细介绍如何使用Python的smtplib库来发送电子邮件,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • Python2.x版本中cmp()方法的使用教程

    Python2.x版本中cmp()方法的使用教程

    这篇文章主要介绍了Python2.x版本中cmp()方法的使用教程,在Python3.x版本中该方法不再被内置,需要的朋友可以参考下
    2015-05-05
  • python 非线性规划方式(scipy.optimize.minimize)

    python 非线性规划方式(scipy.optimize.minimize)

    今天小编就为大家分享一篇python 非线性规划方式(scipy.optimize.minimize),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python练习之操作MySQL数据库

    Python练习之操作MySQL数据库

    这篇文章主要介绍了Python练习之操作MySQL数据库,文章通过如何创建MySQL数据表?如何向MySQL表中插入数据?如何查询MySQL中的数据?的三个问题展开了详细的内容介绍
    2022-06-06

最新评论