目录

使用 NumPy 模块操作像素

NumPy 概述

数组的类型

创建数组

操作数组

切片操作就不学了python笔记中已提

创建图像

黑中有白

斑点图

拼接图像

色彩空间与通道

色彩空间

GRAY 色彩空间

HSV 色彩空间

通道

拆分通道

合并通道

alpha 通道


使用 NumPy 模块操作像素

图像在 OpenCV 中以二维或三维数组表示,数组中的每一个值就是图像的像素值。善于操作数组的 NumPy 模块就成了 OpenCV 的依赖包。OpenCV 中很多操作都要依赖 NumPy 模块,例如创建纯色图像、创建掩模和创建卷积核等。本节将简单介绍 NumPy 模块的常用操作方法,并演示如何利用 NumPy 模块创建图像。

NumPy 概述

NumPy(见图 4.9)更像是一个魔方(见图 4.10),它是 Python 数组计算、矩阵运算和科学计算的核心库,NumPy 来源于 Numerical 和 Python 两个单词。NumPy 提供了一个高性能的数组对象,以及可以轻松创建一维数组、二维数组和多维数组等大量实用方法,帮助开发者轻松地进行数组计算,从而广泛地应用于数据分析、机器学习、图像处理和计算机图形学、数学任务等领域中。由于 NumPy 是由 C 语言实现的,所以其运算速度非常快。具体功能如下。

数组的类型

在对数组进行基本操作前,首先了解一下 NumPy 的数据类型。NumPy 比 Python 增加了更多种类的数值类型,如表 4.1 所示,为了区别于 Python 数据类型,NumPy 中的 bool、int、float、complex 等数据类型名称末尾都加了短下画线「_」。

创建数组

NumPy 提供了很多创建数组的方法,下面分别介绍。

1.最常规的 array()方法

 numpy.array(object, dtype, copy, order, subok, ndmin)

.创建用 0 填充的数组

 zeros()

创建纯 1 数组

ones()

创建随机数组

randint()

操作数组

加法运算

减法和乘除法运算

幂运算

比较运算

使用 NumPy 创建 2 个数组,分别使用「>=」「==」「<=」和「!=」运算符比较 2 个数组

复制数组

 n2 = np.array(n1, copy=True)

切片操作就不学了python笔记中已提

创建图像

创建纯白图像。

import cv2
import numpy as npwidth=200
height=100
image=np.zeros((height,width))
image[:100,:200]=255
cv2.imshow('img',image)
cv2.waitKey(0)

创建纯黑图片

可以将上述代码的255改成0

黑中有白

import cv2import numpy as npwidth=600
height=400img=np.zeros((width,height))
img[100:200,100:200]=255
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

斑点图

import cv2
import numpy as npwidth=200
height=100img=np.random.randint(256,size=(height,width),dtype=np.uint8)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

彩色斑点只需要将二维改成三维就行

拼接图像

水平拼接数组

array = numpy.hstack(tup)

垂直拼接数组

 array = numpy.vstack(tup)

色彩空间与通道

色彩是人类的眼睛对于不同频率的光线的不同感受,不同频率的光线既是客观存在的又是人类主观感知的。为了表示这些不同频率的光线的色彩,人类建立了多种色彩模型,把这些色彩模型称作色彩空间。OpenCV 中的 BGR 色彩空间有 3 个通道,即表示蓝色的 B 通道、表示绿色的 G 通道和表示红色的 R 通道。本章将具体讲解色彩空间和通道,以及二者之间的紧密联系。

色彩空间

虽然 Photoshop 把一幅彩色图像的色彩空间默认为 RGB 色彩空间,但是 OpenCV 把一幅彩色图像的色彩空间默认为 BGR 色彩空间,这是因为 OpenCV 拆分一幅彩色图像的通道后,默认的通道顺序是 B→G→R。熟悉了 BGR 色彩空间后,本节将结合如图 5.1 所示的图像(本书彩色图像见资源包),介绍另外两个比较常见的色彩空间:GRAY 色彩空间和 HSV 色彩空间。

GRAY 色彩空间

1.什么是 GRAY 色彩空间

GRAY 色彩空间通常指的是灰度图像,灰度图像是一种每个像素都是从黑到白,被处理为 256 个灰度级别的单色图像。这 256 个灰度级别分别用区间[0,255]中的数值表示。其中,「0」表示纯黑色,「255」表示纯白色,0~255 的数值表示不同亮度(即色彩的深浅程度)的深灰色或者浅灰色。因此,一幅灰度图像也能够展现丰富的细节信息,如图 5.2 所示。

dst = cv2.cvtColor(src, code)

说明

虽然色彩空间类型转换是双向的,而且 OpenCV 也提供了 cv2.COLOR_GRAY2BGR(从 GRAY 色彩空间转换到 BGR 色彩空间)和 cv2.COLOR_ BGR2GRAY(从 BGR 色彩空间转换到 GRAY 色彩空间)2 个色彩空间转换码,但是灰度图像是无法转换成彩色图像的。这是因为在彩色图像转换成灰度图像的过程中,丢失了颜色比例(即红色、绿色和蓝色之间的混合比例)。这些比例一旦丢失,就再也找不回来了。

HSV 色彩空间

1.什么是 HSV 色彩空间

BGR 色彩空间是基于三基色而言的,三基色指的是红色、绿色和蓝色。而 HSV 色彩空间则是基于色调、饱和度和亮度而言的。

其中,色调(H)是指光的颜色,例如,彩虹中的赤、橙、黄、绿、青、蓝、紫分别表示不同的色调,如图 5.4 所示。在 OpenCV 中,色调在区间[0,180]内取值。例如,代表红色、黄色、绿色和蓝色的色调值分别为 0、30、60 和 120。

饱和度(S)是指色彩的深浅。在 OpenCV 中,饱和度在区间[0,255]内取值。当饱和度为 0 时,图像将变为灰度图像

通道

在 BGR 色彩空间中,图像的通道由 B 通道、G 通道和 R 通道构成。本节将介绍如何使用 OpenCV 提供的方法拆分和合并通道。

拆分通道

拆分一幅 BGR 图像中的通道

当使用 split()方法拆分一幅 BGR 图像中的通道时,split()方法的语法如下:

  b, g, r = cv2.split(bgr_image)

拆分一幅 HSV 图像中的通道

  h, s, v = cv2.split(hsv_image)

合并通道

合并 B 通道图像、G 通道图像和 R 通道图像

当使用 merge()方法按 B→G→R 的顺序合并通道时,merge()方法的语法如下:

  bgr = cv2.merge([b, g, r])
import  cv2
image=cv2.imread('dog/gou .jpg')
image_cv2=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v=cv2.split(image_cv2)
#h[:,:]=180
#v[:,:]=255
s[:,:]=255
image_cv2Y=cv2.merge((h,s,v))
cv2.imshow('y',image_cv2Y)
cv2.waitKey(0)
cv2.destroyAllWindows()
import numpy as  np
import cv2
image=cv2.imread('dog/gou .jpg')
image_hsv=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
#cv2.imshow('dog',image_hsv)
b,g,r=cv2.split(image)
h,s,v=cv2.split(image_hsv)
# cv2.imshow('h',h)
# cv2.imshow('s',s)
# cv2.imshow('v',v)
# cv2.imshow('b',b)
# cv2.imshow('g',g)
# cv2.imshow('r',r)
image1=cv2.merge((b,g,r))
cv2.imshow('image',image1)
cv2.waitKey(0)# cv2.destroyAllWindows()

alpha 通道

BGR 色彩空间包含了 3 个通道,即 B 通道、G 通道和 R 通道。OpenCV 在 BGR 色彩空间的基础上,又增加了一个用于设置图像透明度的 A 通道,即 alpha 通道。这样,形成一个由 B 通道、G 通道、R 通道和 A 通道 4 个通道构成的色彩空间,即 BGRA 色彩空间。在 BGRA 色彩空间中,alpha 通道在区间[0,255]内取值;其中,0 表示透明,255 表示不透明。

opencv从入门到精通 哦吼02相关推荐

  1. opencv从入门到精通11

    目录 人脸检测和人脸识别 级联分类器 分析人脸位置 检测其他内容 眼睛检测 猫脸检测 人脸识别 Eigenfaces 人脸识别器 Fisherfaces 人脸识别器 Local Binary Patt ...

  2. opencv从入门到精通(2)--简单图像变换

    1.图像滤波 这里有到两个函数cvCreateImage和 cvSmooth( image, out, CV_GAUSSIAN, 5,5,0,0 ). cvCreateImage(cvGetSize( ...

  3. OpenCV从入门到精通——边缘检测算法Canny

    Canny 算法 边缘:我的理解是在图像处理的过程中,针对我们图像处理的过程中,梯度变化以较大的地方能够让我们能够快速辨识,针对一个人脸,脸上有一些平滑的地方(没错我针对美颜的),与头发的接壤处,会让 ...

  4. Opencv从入门到精通(五):透视图、拼接图片、颜色检测

    文章目录 一.透视图 二.拼接图片 三.颜色检测 一.透视图 二.拼接图片 实际上操作的是像素点矩阵 import cv2 import numpy as npimg = cv2.imread('1. ...

  5. 七夕福利 | 3D视觉从入门到精通系统学习教程

    写在前面 首先提前祝大家七夕快乐,感谢大家对工坊的陪伴与支持! 今天是七夕福利活动的最后一天,共100张券,已经送出去了60多张,还剩不到35张,大家可以抓住本次的活动机会,享受全年的最低价(优惠了7 ...

  6. python从入门到精通视频-python从入门到精通视频(大全60集)

    教程名称:python从入门到精通视频(全60集) 0'1 Python编程语言历史及特性.mp4 02 Python编程语言初接触.mp4 03 Python程序文件结构.mp4 04 准备Pyth ...

  7. python从入门到精通怎么样-Python从入门到精通:一个月就够了

    导读:毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习 ...

  8. Nginx开发从入门到精通

    Nginx开发从入门到精通 缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理 ...

  9. 网页编程从入门到精通 杨凡_学习计划丨西门子S7200编程从入门到精通

    点击关注? PLC进阶就上"技成PLC课堂"! S7-200从入门到精通这个课程涵盖了S7-200PLC的所有的功能应用,本视频主要分为以 下几个内容对S7-200PLC进行详细介 ...

最新文章

  1. android蓝牙python,Android蓝牙连接问题
  2. python3 的windows下文件操作注意问题
  3. linux下格式化U盘
  4. mybatis源码_Mybatis源码之SqlSession
  5. oracle的脚本语言是什么意思,Oracle中的sql脚本语言中的循环语句介绍
  6. 历史重现,德国海关突袭IFA大展
  7. 003.DNS主从正反解析部署
  8. 2d Laser 和 camera 标定工具原理及使用方法
  9. php执行cmd/shell命令 木马小后门
  10. D3可视化:(2)Bar Chart with D3js
  11. groupby java_Java8的groupBy实现集合的分组
  12. dismiss 多个viewController
  13. Android项目实战(十):自定义倒计时的TextView
  14. linux tick 函数,Linux上的GetTickCount函数
  15. 计算机专业毕设java选题参考
  16. 饥荒服务器地图配置文件,饥荒联机版世界地图设置心得 联机全地图设置方法...
  17. SAP库存盘点必要知识
  18. CYQ.Data、ASP.NET Aries 百家企业使用名单
  19. 外汇天眼:什么是熊市和牛市?
  20. 低调,中国的FPGA到底有多强?!

热门文章

  1. Delphi 文件操作(路径、目录)
  2. 随笔 —— 门徒 无限恐怖
  3. 懒人开关 ESP32控制舵机旋转(基于ESP32+SG90舵机+微信小程序)
  4. android webview 基类,Android开罐头——WebView高可扩展性封装(一)
  5. 交换机中光口是如何配置的
  6. 2021.3.8-2021.3.14周报
  7. 全球最火的两个无人餐厅,全靠智能技术加持
  8. opencv3.1 提取图像中某一像素点的HSV值并判断颜色
  9. 怎样在AIX 5.1中建立热后备(hot spare)磁盘
  10. 百度云gpu服务器,百度云GPU服务器都有哪些使用场景?