前面了解了灰度图片在python里的表示方式,也是图片的数据结构,它是采用numpy的ndarray来存储,是一个二维的数据结构。那么彩色图片是怎么样表示呢?难道也是采用二维数组吗?在理解表示方式之前,先来看一下彩色图片的基本特征。下雨之后,如果天空中有太阳,往往会形成一道亮丽的彩虹风景,这样就看到了五颜六色。如果学习过初中的物理,就知道这是太阳光经过水珠的折射,把白光进行分解了。基于这个原理,科学家不断地研究,寻找颜色的秘密,以及它的本质。比如白光可以有这么多种颜色组成的,反过来,说明一点,只要找到几种基本的颜色,就可以组合成其它颜色。经过不断试验,发现红色(R)、绿色(G)和蓝色(B)就可以组合出其它颜色,只是每种颜色分量不一样。如果三种颜色份量一样,组合出来的就是白色。旧式的CRT彩色电视机就是采用这个原理,目前LED的显示器也是采用这个原理。那么彩色图片转换为数字化时,也可以采用这个原理。在灰度图片里,每个像素只要使用一个字节就可以表示了,如果彩色图片也采用一个字节来表示,每种颜色表示只能2位或3位来表示,这样颜色非常有限,表示的色彩就失真很多。在以前旧式的电脑是有用这种方式来表示的,随着技术的进步,内存和储存的容量扩大,目前都是每一种颜色采用一个字节来表示,三种颜色共用3个字节来表示,也是24位来表示。比如(0,0,0)表示黑色,(255,255,255)表示白色,(255,0,0)表示红色,(0,255,0)表示绿色,(0,0,255)表示蓝色。

下面通过一个小程序来看一下在python的OpenCV里是怎么样表示,代码如下:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2#图片的路径
imgname = "img1.jpg"#读取图片
image = cv2.imread(imgname, cv2.IMREAD_COLOR)
print(image)
print(image.shape)
print(type(image))#分离三个颜色通道
b = image[: , :, 0]
g = image[: , :, 1]
r = image[: , :, 2]cv2.imshow("B", b)
cv2.imshow("G", g)
cv2.imshow("R", r)#显示图像
cv2.imshow("image", image)#等待用户输入,然后删除所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

运行程序之后,可以看到下面的结果输出:

从上面结果可以看到三种颜色的图片,每种颜色的图片数值不一样。

同时也可以看到ndarray的结构为(288, 300, 3),也就是说288表示行,300表示列,3表示颜色的三维数组,它的组成如下:

[[[217 138 129]           表示一列中的一个像素点

[219 140 131]

[222 143 134]

...

[196 123 119]

[194 123 119]

[193 122 118]]         到这里表示一行元素

下一行元素的开始

[[216 137 128]

[218 139 130]

[221 142 133]

...

[196 123 119]

[193 122 118]

[193 122 118]]

由于函数返回的图像以[B G R]的排列表示颜色分量,因此image[: , :, 0]语句是获取蓝色分量的通道数据,image[: , :, 1]语句是获取绿色分量的通道数据,image[: , :, 2]语句是获取红色分量的通道数据,如果要修改不同的颜色,就可以操作相应颜色的通道,就可以改变图片的颜色了。

https://blog.csdn.net/caimouse/article/details/51749579

彩色图片在OpenCV里的表示方式相关推荐

  1. 图像位深度 8位 16位 24位 32位区别对比 RGB 真彩色 基本概念:(大小,深度,通道)位深度数据类型转换原理 Mat数据读取(opencv里的imread)

    位深度 位深度是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的二进制数值位数来表示的.计算机之所以能够显示颜色,是采用了一种称作"位"( bit ) 的记数单位来记录所表 ...

  2. OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序

    OpenCV+Python 彩色图片的 BGR.灰度图.HSV分量图显示的程序 介绍 OpenCV+Python 使用openCV中的split()函数和 cvtColor()函数提取一张彩色图片的B ...

  3. OpenCV python 彩色图片的三通道

    OpenCV python 彩色图片的三通道 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 目的:理解彩色图片的三 ...

  4. 在OpenCV里使用图片修复

    有一些旧的图片可能保存得不好,会导致丢失了一些像素,如下图这样: 这时如果有人觉得这个图片很珍贵,要想去修复它,怎么办呢? 在OpenCV里提供了两种算法来进行图片修复,第一种是cv.INPAINT_ ...

  5. OprenCV学习之路一:将彩色图片转换成灰度图

    //将一张彩色图片转成灰度图:#include<cv.h> #include<cvaux.h> #include<highgui.h> #include<ml ...

  6. Android 使用OpenCV的三种方式(Android Studio)

    from: http://blog.csdn.net/sbsujjbcy/article/details/49520791 其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份, ...

  7. Python之将彩色图片批量转化为黑白图片

    一.前言 最近遇到了一个新的情景,需要将彩色图片转化为黑白图片,如果手动地去转化一张一张图片,那就真的太原始,效率太低. 用 Python,只需要几行代码就可以在几秒内转化上千张图片.而且,这个功能的 ...

  8. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

    Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...

  9. python opencv 读取图片_Python opencv 读取图像

    对于 matlab 起家做数字图像处理的人来讲都非常适应matlab对图像处理的操作和思路,尤其是它可以非常方便直观的看到图像的RGB值. 由于最近在研究深度学习的计算机视觉方面的东西,于是完全自学接 ...

最新文章

  1. 例题6-6 小球下落(Dropping Balls, UVa 679)
  2. cat卡特鞋有实体店吗_保养课堂 | 小小密封件,竟然是CAT油缸和连杆耐用的秘密...
  3. requestmapping配置页面后_@RequestMapping使用须知
  4. pytorch 多进程队列
  5. 如何实现CSS居中?–CSS居中常用方法
  6. Android PC投屏简单尝试—最终章1
  7. java主类与源代码名称_java 获取操作系统名称 附源代码
  8. javascript 模块模式
  9. npm安装报错Error: EPERM: operation not permitted解决方案
  10. adb不识别设备(手机)的若干情形及解决方法
  11. 华为电视鸿蒙系统好用吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  12. 电脑编程教学_2020太原数控车床电脑编程一对一实操教学不限学时
  13. 机器学习相关知识 大佬博客整理
  14. Python+Matplotlib绘制带误差线的柱状图
  15. [转载] python中将str转成数字_python如何将字符转换为数字
  16. Web.py session用户认证
  17. 2020年电工(技师)找答案及电工(技师)考试申请表
  18. mysql静默安装_Windows环境Mysql静默安装
  19. 实战一:给定一段音频,请提取12维MFCC特征,阅读代码预加重、分帧、加窗部分,完善作业代码中fbank和mfcc部分,并给出最终的Fbank和MFCC特征,用默认的配置参数,无需进行修改
  20. 都说DBA 是越老越值钱, 那你是没干过DBA

热门文章

  1. 解决.NET报错【80040154 没有注册类】的问题
  2. 《“己学”发略》发略
  3. 《rework》读书摘要
  4. python+selenium打开浏览器-设置浏览器路径和驱动器路径
  5. h5物体拖动_iH5高级教程:H5交互进阶,拖动物品效果
  6. FCN训练自己数据集(person-segmentation)、SIFT-FLOW、SBD和VOC实验总结
  7. 探寻中国便携式医疗电子市场的机遇与挑战
  8. Java实现简单的售货机程序2
  9. Python之Turtle库绘制简单图形
  10. 上汽通用凯迪拉克汽车的多媒体系统不能识别u盘的解决方法