在这里的第一篇。

  这篇的是为了说明PIL库中图像的mode参数。

  我做的事情是:

  1. 在本地找了jpg的图,convert为不同mode,将不同的图截取做了个脑图,有个直观的感觉吧。
  2. 把不同mode的图通过np.array()转化为array, 打印出array的shape, 和array[0, 0]的值, 便于理解不同mode的通道和像素值的存储。

  1 部分结果见下:

  

  2 部分代码和结果:

  

  1. # 将不同模式的图片打印出shape 和 [0, 0]像素点的值
  2. from PIL import Image
  3. import matplotlib.pyplot as plt
  4. image = Image.open('images/tower.jpg') # 本地一个文件
  5. mode_list = ['', 'L', 'I', 'F', 'P', 'RGB', 'RGBA', 'CMYK', 'YCbCr' ]
  6. for mode in mode_list:
  7. img = image.convert(mode)
  8. img_data = np.array(img)
  9. print('img_{:>1}.shape: {}' .format(mode, img_data.shape))
  10. print('img_{:>}_data[0, 0]: {}'.format(mode, img_data[0, 0]))
  11. print('---')
  1. # 以下为output
  1. img_1.shape: (1276, 1920)
  2. img_1_data[0, 0]: False
  3. ---
  4. img_L.shape: (1276, 1920)
  5. img_L_data[0, 0]: 88
  6. ---
  7. img_I.shape: (1276, 1920)
  8. img_I_data[0, 0]: 88
  9. ---
  10. img_F.shape: (1276, 1920)
  11. img_F_data[0, 0]: 88.94599914550781
  12. ---
  13. img_P.shape: (1276, 1920)
  14. img_P_data[0, 0]: 131
  15. ---
  16. img_RGB.shape: (1276, 1920, 3)
  17. img_RGB_data[0, 0]: [ 51 97 147]
  18. ---
  19. img_RGBA.shape: (1276, 1920, 4)
  20. img_RGBA_data[0, 0]: [ 51 97 147 255]
  21. ---
  22. img_CMYK.shape: (1276, 1920, 4)
  23. img_CMYK_data[0, 0]: [204 158 108 0]
  24. ---
  25. img_YCbCr.shape: (1276, 1920, 3)
  26. img_YCbCr_data[0, 0]: [ 88 160 100]
  27. ---
  1.  以上可对mode参数有所了解,第一篇拙劣,还望指正。
  1.  
  2.   最后一点关于颜色模式的,供备注用。
  1. RGB 为真色彩模式, 可组合为 256 x 256 x256 种, 打印需要更改为 CMYK模式, 需要注意数值溢出的问题。
  2. HSB 模式(本篇没有涉及),建立基于人类感觉颜色的方式,将颜色分为色相(Hue),饱和度(Saturation),明亮度(Brightness),这里不详细展开。
  3. CMYK模式,应用在印刷领域,4个字母意思是青、洋红、黄、黑,因为不能保证纯度,所以需要黑。
  4. 位图模式,见1, 颜色由黑和白表示(True, False)。
  5. 灰度模式,只有灰度, 所有颜色转化为灰度值,见L,I,F。
  6. 双色调模式(未有涉及),节约成本将可使用双色调。
  7. Lab模式(未涉及,ps内置),由3通道组成(亮度,a,b)组成,作为RGB到CMYK的过渡。
  8. 多通道模式,删除RGB,CMYK,Lab中某一个通道后,会转变为多通道,多通道用于处理特殊打印,它的每个通道都为256级灰度通道。
  9. 索引颜色模式,用在多媒体和网页,通过颜色表查取,没有则就近取,仅支持单通道,(8位/像素)。

  end

PIL包中图像的mode参数的更多相关文章

  1. 机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集

    机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集   选自Microsoft www.tz365.Cn 作者:Lee Scott 机器之心编译 参与:李亚洲.吴攀. ...

  2. 最小角回归 LARS算法包的用法以及模型参数的选择(R语言 )

    Lasso回归模型,是常用线性回归的模型,当模型维度较高时,Lasso算法通过求解稀疏解对模型进行变量选择.Lars算法则提供了一种快速求解该模型的方法.Lars算法的基本原理有许多其他文章可以参考, ...

  3. 深入学习OpenCV中图像灰度化原理,图像相似度的算法

    最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...

  4. C++中的变长参数

    新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...

  5. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...

  6. java.io包中的字节流—— FilterInputStream和FilterOutputStream

    接着上篇文章,本篇继续说java.io包中的字节流.按照前篇文章所说,java.io包中的字节流中的类关系有用到GoF<设计模式>中的装饰者模式,而这正体现在FilterInputStre ...

  7. 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

    ---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...

  8. 读取Jar包中的资源问题探究

    最近在写一个可执行jar的程序,程序中包含了2个资源包,一个是images,一个是files.问题来了,在Eclipse里开发的时候,当用File类来获取files下面的文件时,没有任何问题.但是当程 ...

  9. Oracle数据库中的Function调用参数问题

    在工作中用到了Oracle数据库,需要调用Oracle的Function,Function返回的游标和结果都是通过参数来获取的 比如Function定义如下: , intype, ininttype) ...

随机推荐

  1. Linux内存管理-高端内存(一)

    高端内存是指物理地址大于 896M 的内存.对于这样的内存,无法在“内核直接映射空间”进行映射. 为什么? 因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 ...

  2. execute immediate

    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵逼的看着,一星差评! ...

  3. 菜鸟级渣渣 关于MAC系统开发java的吐槽

    最开始买电脑的时候不知道为什么脑子一抽买了个苹果.因为不知道和谁聊的.后期服务器大部分都是linux系统,后期也要学linux系统.mac系统类似linux系统.然后就买了个mac,感觉凭借自己的聪明 ...

  4. AFNetworking 2.x 的SSL身份认证

    一般来讲如果app用了web service , 我们需要防止数据嗅探来保证数据安全.通常的做法是用ssl来连接以防止数据抓包和嗅探 其实这么做的话还是不够的.我们还需要防止中间人攻击(不明白的自己去 ...

  5. STM32 HAL库学习系列第3篇 常使用的几种延时方式

    1   自带的hal_delay 函数    毫秒级延迟 void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = HAL_GetTick( ...

  6. linux几个重要的组合键

    我们在用Windows系统时,有没有感觉快键键让我们工作更有效率,在Linux系统中仍有很好用的快捷键,这些快捷键可以辅助我们进行指令的编写与程序的中断呢,下面介绍几个经常用到的快捷键. 一.Tab- ...

  7. Leecode刷题之旅-C语言/python-349两整数之和

    /* * @lc app=leetcode.cn id=371 lang=c * * [371] 两整数之和 * * https://leetcode-cn.com/problems/sum-of-t ...

  8. 虚拟机内安装Centos7步骤

    下面就来看看怎么安装centos7,首先就是要准备一个虚拟机了 简称VM,当然虚拟机的安装步骤,我也不再多说,我用的Workstation 15 Pro的版本,我们直接打开虚拟机,打开界面如下: 在安 ...

  9. PG 存储函数调用变量的3种方法。

    一.假设有表student,字段分别有id,remark,name等字段. 二.写一个存储函数,根据传过去的变量ID更新remark的内容. 调用该存储函数格式如下:select  update_st ...

  10. (数据科学学习手札49)Scala中的模式匹配

    一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...