图片中存在着色版的概念,二维矩阵的每个元素的值指定了一种颜色,因此可以显示出彩色。

迁移调色板

下述python代码将VOC数据集中的某个语义分割的图片的调色板直接应用在一个二维矩阵代表的图像上

#label_im is a numpy array of 1 x height x width

#return an Image object,call its' save('out.png') functioin to save as image file

def palette( label_im):

import copy

from PIL import Image

palette_im = Image.open('2008_000144.png')

palette = palette_im.palette

'''

Transfer the VOC color palette to an output mask for visualization.

'''

if label_im.ndim == 3:

label_im = label_im[0]

label = Image.fromarray(label_im, mode='P')

label.palette = copy.copy(palette)

return label

应用color map

#直接转成含RGB信息的三维矩阵

#示例代码中应用了gist_earth的color map

from matplotlib import cm

im = Image.fromarray(np.uint8(cm.gist_earth(label)*255))

自定义color map

下面的代码用于生成一个color map(由VOC数据集中的代码VOCdevkit/VOCcode/VOClabelcolormap.m转换而来)

import numpy as np

# bitget bitshift bitor zeros is all in matlab internal function

def bitget(num,i):

ar=np.array([[num]], dtype=np.uint8)

bits=np.unpackbits(ar, axis=1)[0]

idx=bits.size - 1 - i

return bits[idx]

def bitshift(num,i): #left shift,if i <0 ,then same as left_shift(num,-i)

return np.right_shift(num,i)

def bitor(x,y):

return np.bitwise_or(x,y)

#N.B. np.zeros default data type is float and usally color map element is float number that less than 1 [(0~255)/255]

def getColorMap(N):

#default N is 256

if N==None:

N=256

cmap=np.zeros(N*3, dtype=np.uint8).reshape(N,3)

for i in range(N):

idx=i

r=0;g=0;b=0

for j in range(8):

r = bitor(r, bitshift(bitget(idx,0),7 - j));

g = bitor(g, bitshift(bitget(idx,1),7 - j));

b = bitor(b, bitshift(bitget(idx,2),7 - j));

idx = bitshift(idx,-3);

cmap[i,0]=r; cmap[i,1]=g; cmap[i,2]=b;

#cmap = cmap / 255

return cmap

#ar is 2-dim np.ndarray

def toRGBarray(ar,classes):

cmap=getColorMap(classes)

rows=ar.shape[0]

cols=ar.shape[1]

r=np.zeros(ar.size*3, dtype=np.uint8).reshape(rows,cols,3)

for i in range(rows):

for j in range(cols):

r[i,j]=cmap[ar[i,j]]

return r

if __name__ == '__main__':

cmap=getColorMap(21)

print cmap

调用方式:

pic_arr=voccm.toRGBarray(label,21)

im = Image.fromarray(pic_arr,mode='RGB')

im.save('out.png')

小结

除了用作常规的图片存储外,通过给二维数组不同元素赋予颜色的方式可以使我们对数据的空间布局分布有感官的认识,类似于热力图可视化的方式。

python 怎么得到图像深度图 软件_Python为8bit深度图像应用color map相关推荐

  1. python 怎么得到图像深度图 软件_python有关于图像的深度和通道

    目录: (一)图像的深度和图像的通道 (1)图像的深度 (2)图像的通道 (二)自定义一张多通道的图片 (1)zeros 函数 (2)ones 函数 (三)自定义一张单通道的图片 (四)像素操作 (1 ...

  2. python 怎么得到图像深度图 软件_Python/OpenCV:从立体图像计算深度图

    我有两个立体图像要用来计算深度图.虽然我不幸不知道C/C++,但我知道Python--所以当我发现this tutorial时,我是乐观的. 不幸的是,教程似乎有些过时了.它不仅需要调整以运行(将&q ...

  3. python电脑截图文字识别软件_Python实现文字识别,来看看大牛怎么实现截图/

    python有截屏的包吗 有你可以试试pyscreenshot. 地址:https://github.com/ponty/pyscreenshot 使用:import pyscreenshot as  ...

  4. python写安卓游戏辅助软件_python微信跳一跳辅助软件

    python微信跳一跳辅助软件是一款跳一跳小游戏的刷分辅助工具应用,用户在微信玩跳一跳游戏的时候使用软件可以随意的修改其中的成绩分数,按照你自己的意愿进行相关的改变,更好的帮助你达成游戏的最高峰,喜欢 ...

  5. python 怎么得到图像深度图 软件_如何用 Python 和 fast.ai 做图像深度迁移学习?...

    本文带你认识一个优秀的新深度学习框架,了解深度学习中最重要的3件事. 框架 看到这个题目,你可能会疑惑:老师,你不是讲过如何用深度学习做图像分类了吗?迁移学习好像也讲过了啊! 说得对!我要感谢你对我专 ...

  6. python画的图怎么保存_python通过PyGame绘制图像并保存为图片文件的代码

    把开发过程中常用的一些内容片段记录起来,下边内容是关于python通过PyGame绘制图像并保存为图片文件的内容,希望对大伙有较大好处. ''' pg_draw_circle_save101.py d ...

  7. python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  8. 如何用python画出一般函数图_python如何画函数图像

    通过图像可以直观地学习函数变化.分布等规律,在学习函数.概率分布等方面效果显著.下面我们尝试用Python的2D绘图库matplotlib来绘制函数图像. 下面我们来实现一个简单的函数: 首先,调用m ...

  9. python写图片爬取软件_python制作微博图片爬取工具

    有小半个月没有发博客了,因为一直在研究python的GUI,买了一本书学习了一些基础,用我所学做了我的第一款GUI--微博图片爬取工具.本软件源代码已经放在了博客中,另外软件已经打包好上传到网盘中以供 ...

  10. python壁纸数据抓取软件_python应用:Python 爬取必应壁纸

    Python是一种解释型脚本语言,可以应用于以下领域: web和Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 软件开发 后端开发 网络爬虫 import re import os ...

最新文章

  1. Python爬虫学到什么程度就可以去找工作了?
  2. Linux命令集合(更新中。。。)
  3. jpql hql_无需部署即可测试JPQL / HQL
  4. Java并发教程– CountDownLatch
  5. cm0中断优先级_转:第13章 FreeRTOS任务优先级修改及其分配方案
  6. 空间金字塔池化_回顾语义分割—DenseASPP (密集空洞空间金字塔池化)
  7. 关于SDN的未来,Linux基金会专访阿里云网络大神
  8. 微软冷箭射苹果:世界需要更开放的平台
  9. CSS 强制换行和禁止换行学习
  10. 自动化通讯协定——现场总线
  11. HNOI2019:My Dream
  12. ubuntu 10.04 下驱动程序的hello word
  13. ubuntu jdk install
  14. 华三模拟器实现不同vlan之间的隔离,端口如何配置trunk模式
  15. dota2服务器切换账号,DOTA2怎么改成国服 教你三步完成设置
  16. Redis高级之——redis-trib.rb命令详解
  17. QuickTime不支持播放HEVC编码mp4/mov视频
  18. 【雕爷学编程】Arduino动手做(76)---2路光耦继电器模块
  19. Java实现首字母大写
  20. 在matlab中如何把两个txt文件合并到一起

热门文章

  1. 11.go 环境变量
  2. 35. 源码与 Tarball
  3. 25.软件磁盘阵列(Software RAID)
  4. js中this的用法
  5. BZOJ2563: 阿狸和桃子的游戏 贪心
  6. 课时47:魔法方法:定制序列
  7. 微信小游戏flappy bird填坑
  8. Mysql常用的存储引擎
  9. 在C#中实现截获shell程序的输出
  10. [转]Using TRY...CATCH in Transact-SQL