概要

讲解了图像的数据结构Numpy
keywords numpy 图像 数据结构

图像的数据结构

opencv图像读取(imread) 读入的数据格式是numpy的ndarray数据格式.
TODO 其实介绍图像的数据结构,须要以BGR彩图与Graysacle为例子来讲解
如果你对此不是很了解, 可以参照阿凯写的Numpy快速入门教程.
image.png
Numpy基础
因为阿凯在给大家教授python-opencv, 而在python-opencv读入一个图片对象就是numpy的ndarray类型, 所以阿凯有必要在这里给大家讲解一下numpy的一些基础操作. 同时还会介绍numpy中两个重要的概念全局函数与广播. 最后阿凯还介绍了numpy下面的两个包, linalg线形代数计算包与random随机生成包.
下面是以BGR格式为例介绍Image的数据结构.
image.png
第一维度 : Height 高度, 对应这张图片的 nRow行数
第二维度 : Width 宽度, 对应这张图片的nCol 列数
第三维度: Value BGR三通道的值.
BGR 分别代表
B: Blue 蓝色
G: Green 绿色
R: Red 红色
image.png
TODO 这里是不是不太好这么讲?
我随便取了一个图片5*5的小方块, 大家感受一下.

  1. In [18]: img[100:105, 100:105]
  2. Out[18]:
  3. array([[[29, 15, 0],
  4. [29, 14, 0],
  5. [29, 13, 1],
  6. [29, 13, 1],
  7. [29, 12, 3]],
  8. [[27, 14, 0],
  9. [27, 14, 0],
  10. [27, 14, 0],
  11. [27, 13, 1],
  12. [29, 12, 3]],
  13. [[27, 14, 0],
  14. [25, 14, 0],
  15. [25, 14, 0],
  16. [23, 14, 1],
  17. [29, 12, 3]],
  18. [[25, 15, 0],
  19. [25, 14, 0],
  20. [23, 14, 0],
  21. [23, 14, 0],
  22. [27, 12, 3]],
  23. [[25, 15, 0],
  24. [23, 14, 0],
  25. [23, 14, 0],
  26. [22, 15, 0],
  27. [27, 12, 3]]], dtype=uint8)

这里大家还可以看到, 这个图像数据存储格式是uint8, 也就是正数类型, 用八位存储像素的取值.
dtype=uint8 取值范围是 0 至2^8-1也就是255.

ref:http://www.1zlab.com/wiki/python-opencv-tutorial/opencv-image-data-structure/