【涵子来信&python大全】——第二季——opencv第三篇-numpy和颜色通道解释

各位亲爱的读者,博主:

大家好,我是涵子。今天我们继续讲讲opencv,讲讲其中numpy的秘密。如果不清楚上一章的内容,请从链接或者主页回去先读一遍之前的文章,否则今天的内容很难理解。

【涵子来信&python大全】——第二季——opencv第二篇_渴望学习和编程的涵子的博客-CSDN博客https://blog.csdn.net/B20111003/article/details/128653848?spm=1001.2014.3001.5502

【涵子来信&python大全】——第二季——opencv第一篇_渴望学习和编程的涵子的博客-CSDN博客https://blog.csdn.net/B20111003/article/details/128643200?spm=1001.2014.3001.5502
还有,如果pip有问题的话,请复制下面两段代码在cmd命令窗口输入!

pip install opencv-python

pip install numpy


欢迎各路大佬来到涵子主页指点☀️欢迎大家前来学习OpenCV。
✨博客主页:渴望学习和编程的涵子 ꧔ꦿ
꧔ꦿ博文内容如对您有所帮助,还请给个点赞 + 关注 + 收藏✨

注意:今天的部分内容来自菜鸟编程,如果需要看原网址,请到参考内容进行网页跳转


目录

一、ndarray

1.1.什么是ndarray?

1.2.创建与使用ndarray

1.3.opencv的存储格式

二、颜色通道

2.1.色彩空间

2.2. BGR色彩空间

2.3 GRAY色彩空间

2.4 HSV色彩空间

三、答疑解惑与参考资料

3.1.参考资料

3.2.答疑解惑

3.2.1.请问为什么我在自己写完程序后报错了?

3.2.2.为什么我的程序报错了,不能运行?


 

一、ndarray

1.1.什么是ndarray?

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

  • 数据类型或 dtype,描述在数组中的固定大小值的格子。

  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

ndarray 的内部结构:

【涵子来信&python大全】——第二季——opencv第三篇-numpy和颜色通道解释_第1张图片

跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

1.2.创建与使用ndarray

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

或者来一个更加明确的例子:

import numpy as np 
a = np.array([1,2,3])  
print(a)

输出结果如下:

[1 2 3]

还有一个多维度的例子(类似于列表中的二维列表和三位列表等等)

# 多于一个维度  
import numpy as np 
a = np.array([[1,  2],  [3,  4]])  
print (a)

输出结果如下:

[[1  2] 
 [3  4]]

还有一个最小维度的例子

# 最小维度  
import numpy as np 
a = np.array([1, 2, 3, 4, 5], ndmin =  2)  
print (a)

输出如下:

[[1 2 3 4 5]]

1.3.opencv的存储格式

还记得之前的程序吗?

import cv2
img = cv2.imread(r'C:\Users\Designer\Desktop\Bruce\pic.jpg')
cv2.imshow('demo', img)
cv2.waitKey(0)

只需在imshow后面加入一个print(img)就可以了

import cv2
img = cv2.imread(r'C:\Users\Designer\Desktop\Bruce\pic.jpg')
cv2.imshow('demo', img)
print(img)
cv2.waitKey(0)

看看结果:

[[[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 ...

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]]

因为其中的内容太多,就用...代替了(程序中输出时也是这样的)

二、颜色通道

2.1.色彩空间



色彩空间是人类为了描述不同频率的光,而建立出的色彩模型。不同通道的表示方式有所不同。
除了OpenCV默认的BGR色彩空间,还有两个常用的色彩空间:HSV色彩空间和GRAY色彩空间。
其中HSV色彩空间和BGR色彩空间都可以表示彩色色彩空间,都是使用三维数组表示的。而GRAY色彩空间在只能表示灰度图像。

2.2. BGR色彩空间



BGR色彩空间是OpenCV默认的色彩空间。众所周知,BGR色彩空间有三个通道。该色彩空间是基于B(l蓝色),G(绿色),R(红色)而言的。像素数组内每个数据的值都在[0,255]内。

2.3 GRAY色彩空间



GRAY色彩空间即灰度图像的色彩空间。像素数组中,可以是从0到255的 256个数字,每个数值表示从黑变白的颜色深浅程度。0表示纯黑色,255表示纯白色,数值越大越趋于白色。

2.4 HSV色彩空间



BGR色彩空间是基于三基色(红,绿,蓝) 而言的。而HSV色彩空间是基于色调(H),饱和度(S)和亮度(V) 而言的。
 

三、答疑解惑与参考资料

3.1.参考资料

NumPy Ndarray 对象 | 菜鸟教程 (runoob.com)https://www.runoob.com/numpy/numpy-ndarray-object.htmlOpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Open_CV系列(三)】_侯小啾的博客-CSDN博客_bgr hsvhttps://blog.csdn.net/weixin_48964486/article/details/123758373

【涵子来信&python大全】——第二季——opencv第三篇-numpy和颜色通道解释_第2张图片

3.2.答疑解惑

3.2.1.请问为什么我在自己写完程序后报错了?

如果你的错误是这个:

Traceback (most recent call last):
  File "", line 1, in 
    numpy.array([1,2,3])
NameError: name 'numpy' is not defined

那就是你在import的时候用了as np,但是你在调用的时候却写了numpy,所以会报错

3.2.2.为什么我的程序报错了,不能运行?

可能是因为你的文件名和库名重合了,所以才会报错。详情请见下面文章:

python笔记:代码规范 和 我的三月总结_渴望学习和编程的涵子的博客-CSDN博客https://blog.csdn.net/B20111003/article/details/125329242?spm=1001.2014.3001.5502恭喜大家走出了学习opencv的第二步!希望大家持之以恒,送大家一句名言:

Stay foolish, stay kind.

好的,今天的内容就到这儿了!我们下一期再见!

涵子

2023/1/13 

你可能感兴趣的:(涵子来信,python大全,编程,python,numpy,opencv,色彩)