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

news2025/1/20 1:42:52

各位亲爱的读者,博主:

大家好,我是涵子。今天我们继续讲讲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 的内部结构:

跨度可以是负数,这样会使数组在内存中后向移动,切片中 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

3.2.答疑解惑

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

如果你的错误是这个:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能ai写作系统,ai智能写作机器人

人工智能AI大数据深度&#xff1a;基于伪原创算法&#xff0c;采用神经网络算法&#xff0c;在超过1535000篇文章中进行自动学习、聚合算法进行人工智能的创建&#xff0c;内容语义不变&#xff0c;媒体阿里、腾讯、百度均于日前在百家号内容创作者盛典上推出人工智能创作支撑平…

Vue2 Vuex在大型项目中的应用

文章目录前言一、总体结构二、代码结构1. 文件层2. 一级功能模块3. 二级功能模块4. 总状态总结前言 参考去年参与的大型ERP项目, 我主要负责财务模块的前端部分. 这个项目有几百个前端页面(具体多少没算过), 状态管理结构应该是具有参考价值的. 一、总体结构 项目标准中约定仅…

CobaltStrike与Metasploit联动方法

文章目录CobaltStrike联动Metasploit方法一方法二Metasploit联动CobaltStrikeCobaltStrike联动Metasploit CobaltStrike &#xff08;简称CS&#xff09;及 MetaSploit &#xff08;简称MSF&#xff09;各有所长&#xff0c;CS更适合作为稳控平台&#xff0c;MSF更适用于与各类…

包体积优化·工具论·初识包体积优化

“ 【小木箱成长营】包体积优化系列文章&#xff1a; 包体积优化 实战论 怎么做包体积优化? 做好能晋升吗? 能涨多少钱? 包体积优化 方法论 揭开包体积优化神秘面纱 ”一、引言 Hello&#xff0c;我是小木箱&#xff0c;欢迎来到小木箱成长营系列教程&#xff0c;今天将…

预制菜开启春节之战,破局立新正在进行时

撰稿 | 火华 来源 | 贝多财经 对预制菜行业来说&#xff0c;2022年绝对是浓墨重彩的一年。 这条汇集了餐饮企业、专业预制菜企业、冷冻食品企业、农牧水产企业、生鲜电商企业的赛道&#xff0c;在乏善可陈的商业市场中野蛮生长一路高歌。 有调研数据显示&#xff0c;“自己做…

嵌入式linux-僵尸进程?

1.僵尸进程 1.1 僵尸进程的由来和概念 通常&#xff0c;子进程结束之后&#xff0c;需要父进程为子进程进行回收&#xff0c;俗称“收尸”&#xff0c;则回收子进程占用的一些内存资源&#xff0c;父进程通过调用wait()&#xff08;或其变体 waitpid()、waitid()等&#xff0…

公共数据 | CnOpenData中国省际铁路通行时间数据

中国省际铁路通行时间数据 一、数据简介 本数据来自南京大学长江产业经济研究院《全国统一大市场下的省际铁路交通研究报告》的附录部分。中国的铁路&#xff08;高铁&#xff09;建设取得了辉煌成果。但受铁路时刻众多、历史数据不容易搜集整理的限制&#xff0c;学术与政策研…

Linux进程状态和优先级

我的另一篇有关进程概念的博客&#xff1a;Linux 进程概念 目录 一、操作系统进程状态 1.1 运行状态(R) 1.2 阻塞状态(S) 1.3 挂起状态(S&#xff09; 二、Linux操作系统内核中的进程状态 2.1 进程状态种类 2.2 查看R和S进程状态 2.3 T和t状态 2.3.1 T状态 2.3.2 t状态…

python正则表达式与回溯绕过waf

1.正则表达式的背景 正则表达式的历史&#xff1a;美国的两个人类神经元研究者&#xff0c;使用特殊的符号描述。之后有一位科学家将这门技术引入了数学&#xff0c;将这门技术命名为正则表示式。 肯汤普森在编写UNIX系统时&#xff0c;将正则引入到了一个编辑器 绝大多数编…

GNN实战——KarateClub数据集

GNN&#xff1a;graph neural network 图神经网络&#xff0c;是⼀种连接模型&#xff0c;通过⽹络中节点之间的信息传递(message passing)的⽅式来获取图中的依存关系(dependence of graph)&#xff0c;GNN通过从节点任意深度的邻居来更新该节点状态&#xff0c;这个状态能够表…

Linux网络编程 第四天

目录 学习目标 多路IO-poll 多路IO-epoll 进阶epoll 用实验验证LT和ET模式 epoll反应堆 学习目标 1 了解poll函数 2 熟练使用epoll多路IO模型 3 了解epoll ET/LT触发模式并实现 4 理解epoll边缘非阻塞模式并实现 5 了解epoll反应堆模型设计思想 6 能看懂epoll反应堆模型的…

《C++程序设计原理与实践》笔记 第10章 输入/输出流

在本章和下一章中&#xff0c;我们将介绍C标准库中用于处理来自各种源的输入和输出的功能&#xff1a;I/O流。本章关注基本模型&#xff1a;如何读写单个值&#xff0c;以及如何打开和读写整个文件。下一章将介绍具体细节。 10.1 输入和输出 如果没有数据&#xff0c;计算就毫…

【正点原子FPGA连载】第十三章Linux内核移植 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十三章Linux内…

2023版软件测试学习路线图(超详细自学路线)

送福利了&#xff01;超详细的软件测试学习路线图来啦&#xff0c;2023版是首发哟&#xff01;软件测试学习路线图分为9个阶段&#xff0c;包含&#xff1a;软件测试环境配置和管理-->软件测试数据管理与数据库测试-->web前端测试技术-->通用软件测试技术-->Python…

回顾2022! 链上NFT精彩项目大盘点

过去一年&#xff0c;WEB3和元宇宙无疑吸引了一大波关注度和热度。不少知名品牌如耐克、GUCCI、百事可乐、星巴克、麦当劳等都纷纷加入这波浪潮&#xff0c;通过推出NFT、数字商品等&#xff0c;来尝试WEB3机制&#xff0c;进而塑造更好的用户消费体验和参与度。NFT兼具身份、功…

springboot,vue二手交易平台

开发工具&#xff1a;IDEA服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7系统用户前台和管理后台两部分&#xff0c;项目采用前后端分离前端技术&#xff1a;vue elementUI服务端技术&#xff1a;springbootmybatis项目功…

0基础快速掌握正则表达式

背景 在日常开发中&#xff0c;我们经常会遇到使用正则表达式的场景&#xff0c;比如一些常见的表单校验&#xff0c;会让你匹配用户输入的手机号或者身份信息是否规范&#xff0c;这就可以用正则表达式去匹配。相信大多数人在碰到这种场景的时候都是直接去网上找&#xff0c;…

在 2023 ETH Denver 与 Cartesi 一起建设

我们非常高兴的加入了 2023年ETHDenver&#xff0c;参加了BUIDLathon 赛道和现场研讨会等活动。作为规模最大、持续时间最长的ETH 活动之一&#xff0c;我们将向热衷于为全球区块链生态系统做出贡献的新开发者社区分享 Cartesi 技术。你想在2023年#BUIDL 做一些有趣有意义的事情…

基于springboot的景区旅游信息管理系统(源代码+数据库)

基于springboot的景区旅游信息管理系统(源代码数据库) 一、系统介绍 本项目分为管理员与普通用户两种角色 用户登录 前台功能&#xff1a;旅游路线、旅游景点、旅游酒店、旅游车票、旅游保险、旅游策略管理员登录 后台功能&#xff1a;用户管理、旅游路线管理、旅游景点管理…

Codeforces Round #843 (Div. 2)(A~C,E)

A1/A2. Gardener and the Capybaras (easy version)三个字符串&#xff0c;按照顺序连在一起&#xff0c;三个字符串满足第二个字符串大于等于第一个和第三个&#xff0c;或者第二个字符串小于等于第一个和第三个&#xff0c;输出满足情况的三个字符串。思路&#xff1a;对于长…