一、图像数据类型及转换

在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换。这些数据类型及取值范围如下表所示:

Data typeRange

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

-231 to 231 - 1

一张图片的像素值范围是[0,255], 因此默认类型是unit8, 可用如下代码查看数据类型:

from skimage importio,data

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

在上面的表中,特别注意的是float类型,它的范围是[-1,1]或[0,1]之间。一张彩色图片转换为灰度图后,它的类型就由unit8变成了float

1、unit8转float

from skimage importdata,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 importimg_as_ubyteimportnumpy 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_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转灰度图

from skimage importio,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 importio,data,color

img=data.lena()

hsv=color.convert_colorspace(img,'RGB','HSV')

io.imshow(hsv)

在color模块的颜色空间转换函数中,还有一个比较有用的函数是

skimage.color.label2rgb(arr), 可以根据标签值对图片进行着色。以后的图片分类后着色就可以用这个函数。

例:将lena图片分成三类,然后用默认颜色对三类进行着色

from skimage importio,data,colorimportnumpy as np

img=data.lena()

gray=color.rgb2gray(img)

rows,cols=gray.shape

labels=np.zeros([rows,cols])for i inrange(rows):for j inrange(cols):if(gray[i,j]<0.4):

labels[i,j]=0elif(gray[i,j]<0.75):

labels[i,j]=1

else:

labels[i,j]=2dst=color.label2rgb(labels)

io.imshow(dst)

python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...相关推荐

  1. python 图像数据类型及颜色空间转换

    一.图像数据类型及转换 在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换.这些数据类型及取值范围如下表所示: Data type Range uin ...

  2. python在画布上显示动态图片_python – matplotlib – 直接在画布上绘图

    由于动态更新的性能问题,我需要在画布上直接绘制很多矩形作为非常低的级别,也就是说不使用matplotlib.patches,因为我们必须使用经典的GUI. 更准确地说,我想只绘制一个矩形,而不仅仅是所 ...

  3. python在画布上显示动态图片_python Tkinter在画布上显示图像,它总是blin

    我正在从相机捕捉图像,并将图像显示在Tkinter的画布上. 但是,出现了一个奇怪的现象,画布将闪烁下面的代码def get_image_cam() : global cam,cam_flag,cam ...

  4. python 操作word 替换字符串为图片_python实战===老司机奇技淫巧系列之字符转换成图片...

    先放两张效果图: 还有这个: 是不是立马逼格满满~ 这里用到的是一个有趣的模块,叫wordcloud: *建议自行通过下载setup.py的方式安装,pip install 不一定能下载成功. 打开, ...

  5. python显示gif图片_Python给gif图片加文字水印

    为了成批地给图像增加水印,我们这里用到了枕头模块.它的英文名为pillow.安装它的方式为用cmd命令打开DOS提示符窗口,然后输入pip install pillow即可.就像下面这样: pytho ...

  6. python浮点型数据_python中整型与浮点型的数值转换

    知识回顾:上一节,我们学习了input输入函数,这个函数有返回值,返回值的类型是string字符串类型. 输出函数我们使用print函数,输出函数其实有很多可以使用的技巧,它可以输出很多类型的结果,对 ...

  7. python怎么制作图像_python数字图像处理(5):图像的绘制

    实际上前面我们就已经用到了图像的绘制,如: io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据.因此,我们也可 ...

  8. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)

    本文主要运用用Python代码实现了5种彩色空间之间的转换! 具体而言,包括: 1)RGB → CMY: 2)  CMY → RGB: 3)  RGB → HSI: 4)  HSI → RGB: 5) ...

  9. 数字图像处理——对图像进行反白、更改调色板信息、彩色图像变灰度、将图像数据保存于txt文件

    数字图像处理课的第一次实验,主要是对BMP图像的处理,并且学习熟悉excel可视化实验数据 实验环境 建立动态库工程,录入HXLBMPFILE类,建立相应动态库,将整个类作为动态库输出 (HXLBMP ...

最新文章

  1. JTextPane设置颜色出现的问题
  2. Python 进阶:enum 模块源码分析
  3. pybind11简单使用
  4. 在IBM Cloud中运行Fabric
  5. 使用windows server backup备份还原hyper-v 3.0虚拟机
  6. 【LeetCode笔记 - 每日一题】373. 查找和最小的 K 对数字(Java、堆、优先队列)
  7. jQuery源码解析(5)—— Animation动画
  8. 终于开通了,呵呵,以后跟大家一起讨论
  9. LeetCode之二分查找
  10. linux搭建raid5命令,Linux下用mdadm命令创建软RAID5
  11. 需要掌握的flex知识点
  12. 线性代数及其应用(第三版)5.1节习题解答
  13. 华为2019网络挑战赛初赛网络方向部分模拟题及答案
  14. 用计算机写作文的好处,第7课 用计算机写作文教案
  15. 红米手机开启开发者模式方法
  16. 【python】文件读取写 open的方式with的方式 异常报错处理
  17. 为什么SAST和SCA在SDLC中很重要?
  18. 2018年android常用的框架介绍
  19. RDD:基于内存集群计算的容错抽象。
  20. 高斯滤波及高斯卷积核C++实现

热门文章

  1. 山东科技大学计算机等级,关于2019年03月全国计算机等级考试报名工作的通知
  2. crontab 每周五_crontab定时任务 每隔一周的周五执行
  3. 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...
  4. MyEclipse移动开发教程:迁移HTML5移动项目到PhoneGap(二)
  5. BootStrapJS——modal弹出框
  6. 1. 在虚拟机中 添加内容
  7. codeforces #236 div2 简洁题解
  8. toolStrip 按钮图片大小的修改
  9. 网络数据库的复制和同步(转摘)
  10. [剑指offer][JAVA]面试题第[17]题[打印从1到最大的n位整数][大整数][递归回溯]