图像与矩阵

1.引出

在这个专栏中稍后会使用到两条代码如下:

#设置矩阵
img = np.zeros((512,256,3), np.uint8)

#将矩阵作为图片展示
cv.imshow('img',img)

这两句代码的含义是:

  • 第一条代码作用是创建一个矩阵。
  • 第二条代码是将这个矩阵作为一个图片显示出来。(cv.imshow()函数请点击详情查看)。

那么就得来了解下第一条中的np.zeros()函数:

【numpy.zeros(参数1,参数2,参数3,参数4)】

先来讲讲不是本节重点的东西:

参数2:参数1矩阵的数据的数据类型,例如:numpy.int8等,默认为numpy.float64。

参数3:选择内存中存储矩阵的方式,可选两种:①行为主(字母C)②列为主(字母F)。

参数4:引用对象允许创建非NumPy数组的数组。如果传入的数组支持某某协议,则结果将由它定义。

接着就是本节的重点啦:

参数1:指示传入矩阵的形状以及该矩阵采用的色彩模式,矩阵中的值默认用0填充。那么代码中的(512,256,3)是什么意思呢?我传入(512,3)行不行呢?传入(512,1)行不行呢?

2.神秘的(512,512,3)不再神秘

2.1 预备知识:电脑中的图片

电脑中的每一张图片其实都是由一个一个像素点组成的,而每一个像素点再填充不同的颜色最终形成了我们看到的图片。

例如我之前自己做的坦克大战冰雪节限定坦克皮肤:

看起来是不是还凑合,那么放大无数倍之后呢?

是不是就看到明显的像素点了?只不过填充了不同的颜色:浅蓝,深蓝,白等等。

2.2 (512,256,3)中前两个值512、256

所以,显而易见的,一张正经的图片就是由像素点排列成正方形或者长方形。

(512,256,3)中除了最右边的数字3之外剩下的(512,256)就是用来形成矩阵的形状了,表示高为512个像素,长为256个像素的图片了。

示例1:

示例2:将示例1矩阵的长改变为512

现在我们不看图,把矩阵输出以验证我们的想法:

绿色的框表示一个像素点(里面的三个数值先不要管,2.3讲)。

红色的框表示一行像素点(红框中有256个绿框,表示一行有256个像素)。

蓝色的框表示所有的像素点(框中有512个红框,表示有512行)。

所以矩阵大小是512*256。

可能依旧有些同学不明白,没关系,现在我们把矩阵缩小了再看看:

 可以看出:一行由2个像素组成(红框中有俩绿框),总共有2行(蓝框中有俩红框)。

这样就构成了2*2的矩阵啦。

2.3 (512,256,3)中最后一个值3

前面已经讲过图片的形状了,那么如何把一张图片搞的花花绿绿的呢?这就是最后一个数值3的作用了。

先来了解一下颜色吧:

①每个颜色都是由红色、绿色和蓝色调和而来的(RGB色彩模式),红绿蓝数值大小设置的不同调和成了不同的颜色。

②其中红绿蓝数值的最小值设置为0(十六进制表示为#00),最大值设置为255(十六进制表示为#FF)。

③那么矩阵一开始默认的黑色(#000000)就是由无红(#00)+无绿(#00)+无蓝(#00)调和出来的。

所以2.2节中绿色的框(代表每个像素点)里的3个数值就是分别用来设置红绿蓝三原色的数值大小啦。

所以现在你也应该明白了(512,256,3)最右边的3是表示用3个数据来组成颜色。

3.学习完1.和2.后填上之前的坑

Question1传入(512,3)行不行呢?

Answer1:可以。512代表高为512个像素,长为1个像素(没写就默认1)的矩阵,该矩阵的颜色模式采用RGB。

看下图:看见这一列小黑像素组成的图片了吗嘿嘿,我相信大多数人是看不见的哈哈。

Question2传入(512,1)行不行呢?

Answer2:可以。512代表高为512个像素,长为1个像素(没写就默认1)的矩阵,而最右边的1则表示用1个数据来组成颜色(RRGGBB颜色模式)。

最后附上颜色模式:各种颜色模式

Question3传入(512,512,512,3)可以吗?

Answer3:不可以。(512,512,512)形容的不是一个二维矩阵面而是一个3维矩阵体,3维矩阵体无法转化为图像。

写的时候困困的,欢迎勘错揪虫。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东东咚咚东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值