版权声明:欢迎访问博主官方博客:www.eastnotes.com。一个基于Django框架和Next主题的博客网站 https://blog.csdn.net/gaifuxi9518/article/details/88364167
对于一张图片来说,人眼看到的是各种颜色的组合,而计算机看到则是一堆范围在0~255之间的像素值,也就是说如果想让计算机处理图像,首先我们应该将图像转换为数字。怎么转换呢?转换完之后每一维,每个元素值都代表什么含义呢?
1.图像转换
这里用到了一张用PS生成的5x5大小的RGB彩色图像,python,以及scipy.misc库。
这是测试的图像:
下面是两行简单的代码,可以将图像转换为数组:
import scipy.misc # 首先应该用pip安装scipy库
print(scipy.misc.imread("./5.jpg"))
运行后结果如下:
[[[188 71 38]
[254 113 0]
[226 127 0]
[132 91 39]
[ 28 46 84]]
[[118 12 112]
[202 65 59]
[242 110 27]
[218 111 29]
[151 89 38]]
[[112 42 102]
[134 25 90]
[191 55 59]
[243 112 22]
[236 129 0]]
[[159 116 61]
[119 52 87]
[134 29 88]
[180 66 66]
[218 116 5]]
[[232 212 19]
[166 110 75]
[136 27 110]
[145 16 108]
[183 66 46]]]
2.分析结果
从输出结果来看,python将这张5x5大小的图片转换成了一个3维数组,每个“[ ]”,代表一个维度。每一个维度都代表什么含义呢?
借助macOS下的取色工具,我取到了位于图片最左上角那个像素的RGB值,我们用(1,1)来表示这个像素。这个值是(185,71,44),然后我又取到了(1,2)位置上的RGB值为(251,113,34),然后(1,3),(1,4),(1,5)上的RGB的值分别为(223,126,31),(131,91,44),(29,47,83)。
由于取色器取到的RGB值和python取到的RGB值有一定的误差,所有每个像素的值上下都会差几个数,但是这并不影响我们从中寻找规律。
将取色器的值与输出结果进行比对,我们可以发现,三维数组的最里面的第三个维度(也就是最里面的“[ ]”)代表的是一个像素点的RGB值,第二个维度代表的是这张图片的每一行的5个像素点的RGB值,第三个维度代表的就是这个图片。