关于Image模块的调色板

参考:https://blog.csdn.net/zhangziju/article/details/79123275

https://blog.csdn.net/qq_21239003/article/details/81092468

首先与cv2读取为narray格式不同,Image读到的是PIL格式,其中读到的图片mode有如下:

 然后我们这里谈一下P(调色板)模式,该模式下,读到的图片是H*W大小,每个位置的值是一个索引,映射到其对应的调色板上(一般地,调色板长度为768 = 256 * 3,它是一个列表,内容为256个RGB值不断循环),图片中像素的值即为索引值;见下面这个例子:

然后,还有几个函数了解一下,首先是getpalette()获取图片对应的调色板;putpalette给对象加上调色板,相当于上色;

PS:

(1)对于灰度图像,默认的调色板数据格式均为[0,0,0,1,1,1,2,2,2,3,3,3...];

(2)对于RGB图像,默认的调色板也都是一样;也可以自定义调色板;

(3)目标需先转换为P模式,才具有调色板属性(即可以使用getpalette()函数),否则得到的调色板为None;

posted @ 2019-05-28 18:16  outthinker  阅读(4854)  评论(0编辑  收藏  举报