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