1.缘起

在稍后学习本专栏第4节(No.4)中会使用到两条代码如下:

#布置矩阵
img = np.zeros((512,256,3), np.uint8)#将矩阵转化带有颜色的图片(全黑也是一种颜色)
cv.imshow('img',img)

于是读完这两条代码你大概知道了:

  • 第一条代码作用是创建一个矩阵。
  • 第二条代码是将这个矩阵转化为带有颜色的图片样式。(cv.imshow()函数已经在本专栏No.1节中讲过,具体地址https://blog.csdn.net/Cristiano2000/article/details/118462985?spm=1001.2014.3001.5501)

那么就得来了解下第一条中的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,矩阵默认填充0)就是由无红(#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维矩阵体无法转化为图像。

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

参考:

关于numpy.zeros()的官方文档:

https://numpy.org/devdocs/reference/generated/numpy.zeros.html#numpy.zeros

关于颜色光、三原色、三维数组与图像原理:

https://blog.csdn.net/weixin_48306625/article/details/107532968?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

图像与矩阵_Python_No.3相关推荐

  1. OpenCV图像、矩阵、数组介绍

    一.结构 IplImage |-- int nChannels; // Number of color channels (1,2,3,4) |-- int depth; // Pixel depth ...

  2. python图像转矩阵_python 图像转矩阵,矩阵转图像

    1.图像转换为矩阵 matrix = numpy.asarray(image) Help on function asarray in module numpy.core.numeric: asarr ...

  3. 图像雅各比矩阵-将图像像素速度与相机速度关联

    如何将图像像素速度转变到相机速度? 导入 符号定义 固定点相对于移动相机的速度 构建交互矩阵 导入 在基于图像的视觉伺服中,我们可以通过相机观察到图像在相机中的位置发生变化 ,针对于每个像素来说呢?便 ...

  4. CNN卷积层图像和矩阵转换函数

    将图像维度转换为矩阵,和将矩阵转换为图像维度.深度学习框架都会有这样的功能. import numpy as npdef im2col(input_data, filter_h, filter_w, ...

  5. 没事随便写写——matlab图像与矩阵的转换与存储为txt文件

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  6. OpenCV3学习(2.2)——图像Mat矩阵操作与常用函数

    三.大型数组类 OpenCV3对大型数据的存储,具有代表性的是 cv::Mat和cv::SparseMat 类型. cv::Mat针对的是密集连续性的存储,大多数的图像数据被存储为这种类,即使数据为空 ...

  7. python读取文档中有很多指标的数据 写成矩阵_图像处理与特征提取 —— 从 MATLAB 到 Python(一)图像、矩阵与数据的读写...

    最近几个实验从 MATLAB 环境转入到 Python 环境做,踩了几个小坑,记录一下. 写一半发现太长,分开几篇写,计划如下:基本图像处理 特征提取 分类 距离.度量.评价指标与效果评估,及相关绘图 ...

  8. [解疑]图像、矩阵的二维空间变换

    本文经过参考多个文章整理而成,感谢各位博主的无私分享. 综述 图像(2维平面)到图像(2维平面)的四种变换包括:等距变换,相似变换,仿射变换,投影变换.对图像的几何变换本质上是一种线性变换,其数学本质 ...

  9. 使用TensorFlow进行常用的图像处理-图像转为矩阵以及图像大小调整

    图像编码处理 将图像转为一个三维矩阵,并使用三维矩阵形成一个图像: import tensorflow as tf import matplotlib.pyplot as plt# 读取原始图像数据 ...

  10. matlab 图像基本矩阵,MATLAB基本的使用方法归纳(图像,矩阵及函数)

    读取图像:用imread函数读取图像文件,文件格式可以是TIFF.JPEG.GIF.BMP.PNG等.比如 >> f = imread('chestxray.jpg'); 读进来的图像数据 ...

最新文章

  1. 机器学习的出现,是否意味着“古典科学”的过时?
  2. 阿里公开Weex技术架构,还开源了一大波组件
  3. 时光机穿梭---删除文件
  4. mysql看表关联视图_MySQL数据库 : 自关联,视图,事物,索引
  5. 2019-02-25-算法-进化
  6. nodejs: mkdirs 递归创建目录
  7. 解决xgboost报错XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded
  8. linux的can通信busoff,socketCAN内核源码分析是否支持busoff自恢复--Apple的学习笔记
  9. 【情感分析】基于Aspect的情感分析模型总结(一)
  10. BEA Tuxedo中间件应用初探
  11. 使用vlmcsd搭建KMS服务器激活环境
  12. 鼠标不显示玩家服务器,远程链接服务器鼠标不显示
  13. pdfplumber和pdfminer.six提取PDF中文本行内容及对应坐标
  14. python多个文件打包成exe_多个py文件生成一个可运行exe文件
  15. 考研英语 - word-list-25
  16. 删除win10 qaa输入法
  17. GIC/ITS代码分析(11)LPI中断虚拟化之概述
  18. 情侣婚前同居,男人吃亏还是女人吃亏?
  19. 恕我直言,Java四大名著并不一定适合你!
  20. MySql-主从复制

热门文章

  1. 计算机二级C语言题库
  2. 白嫖党进,全网最详细的信息安全术语合集终于来了
  3. java程序实验总结_Java实验报告一及作业总结二
  4. 自动识别人脸html5,【前端】H5人脸实时识别自动截取人脸照片
  5. 王者荣耀scratch版
  6. java 8 64位官方下载_Java 8下载 Java 8.0U181官方正式版(32位/64位) 下载-脚本之家
  7. 【CarMaker学习笔记】手把手教你搭建一个闭环道路并运行车辆
  8. 一文带你了解Java编程语言的前世今生 | Java核心知识点整理
  9. AAC 文件解析及解码流程
  10. 去银行写代码是种什么体验?