【香橙派AIPro+opencv】基础数据结构、颜色转换函数和颜色空间

文章目录


前言

在计算机视觉和图像处理中,理解基础数据结构、颜色转换函数和颜色空间的概念是至关重要的。这些元素是我们处理和理解图像数据的基础。香橙派AIPro,作为一款强大的开发板,配合OpenCV库,可以有效地进行图像处理和计算机视觉任务1。

在本文中,我们将重点介绍OpenCV在香橙派AIPro上的应用,特别是它的基础数据结构、颜色转换函数以及颜色空间。我们将探讨这些概念的重要性,以及如何在香橙派AIPro上使用OpenCV进行有效的图像处理。


基础数据结构

Point

Point类在OpenCV中用于表示二维坐标系下的点,即由其图像坐标x和y指定的2D点。例如,你可以这样创建一个Point对象:Point point(10, 8);。此外,Point类还支持一些基本的算术运算,如加法、减法和标量乘法。

Scalar

Scalar类在OpenCV中主要用于表示颜色或灰度值。它可以包含1到4个元素,分别对应于灰度值、蓝色通道、绿色通道和红色通道的数值。例如,你可以这样创建一个表示RGB颜色的Scalar对象:Scalar s(0, 255, 0);,这将表示绿色。

Size

Size类在OpenCV中用于表示图像或矩形的尺寸,包括宽度和高度。例如,你可以这样创建一个Size对象:Size s(640, 480);。此外,Size类还提供了一些有用的成员函数,如area()用于返回尺寸的面积。

Rect

Rect类在OpenCV中用于表示二维矩形,由左上角的坐标(x,y)以及矩形的宽度和高度定义。例如,你可以这样创建一个Rect对象:Rect r(100, 50, 50, 100);。此外,Rect类还提供了一些有用的成员函数,如area()用于返回矩形的面积,size()返回矩形的尺寸,tl()返回左上角点坐标,br()返回右下角点坐标。

常用函数

好的,以下是OpenCV中PointScalarSizeRect这些类的一些函数的介绍:

  1. Point

    • Point pt; pt.x = 10; pt.y = 5;:创建一个点,设置其x和y坐标。
    • Point pt = Point(10, 5);:创建一个点并初始化其x和y坐标。
  2. Scalar

    • Scalar(a, b, c):创建一个Scalar对象,用于表示BGR颜色,其中a表示蓝色,b表示绿色,c表示红色。
    • Scalar::all(0):创建一个所有通道值都为0的Scalar对象。
  3. Size

    • Size size1(640, 480);:创建一个Size对象,设置其宽度和高度。
    • Size::widthSize::height:获取Size对象的宽度和高度。
    • Size::area():返回Size对象的面积(宽度*高度)。
  4. Rect

    • Rect rect(x, y, width, height);:创建一个矩形,设置其左上角坐标(x,y)和宽度和高度。
    • Rect::xRect::yRect::widthRect::height:获取矩形的左上角坐标和宽度和高度。
    • Rect::tl():返回矩形的左上角坐标。
    • Rect::br():返回矩形的右下角坐标。
    • Rect::area():返回矩形的面积(宽度*高度)。
    • Rect::contains(Point pt):检查矩形是否包含给定的点。

颜色空间转换函数cvtColor

cvtColor是OpenCV中的一个函数,用于在不同的颜色空间之间转换图像¹²。以下是该函数的详细介绍:

函数原型¹:

cpp 复制代码
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);

参数说明

  • src:输入图像,可以是8位无符号整型,16位无符号整型,或者单精度浮点数。
  • dst:输出图像,大小、深度和原图像一致。
  • code:颜色空间转换码,来自ColorConversionCodes
  • dstCn:目标图像的通道数;如果参数是0,通道数自动由srccode决定。

函数作用
cvtColor函数用于将输入图像从一种颜色空间转换为另一种颜色空间。在转换RGB颜色空间的情况下,通道的顺序应该被明确指定(RGB或BGR)。注意在OpenCV中默认的颜色格式经常被指定为RGB,但实际上是BGR(字节顺序颠倒)。

颜色空间转换码

转换码 作用
COLOR_BGR2BGRA 增加alpha通道到RGB或BGR图像
COLOR_BGR2GRAY 在RGB/BGR和grayscale之间转换
COLOR_BGR2XYZ 从RGB/BGR到CIE XYZ
COLOR_BGR2YCrCb 从RGB/BGR 到luma-chroma (aka YCC)
COLOR_BGR2HSV 从RGB/BGR到HSV (hue saturation value)
COLOR_BGR2Lab 转换RGB/BGR到CIE Lab
COLOR_BGR2Luv 转换RGB/BGR到CIE Luv
COLOR_BGR2HLS 转换RGB/BGR到HLS ( 色度 亮度 饱和度)
COLOR_BGR2YUV RGB/BGR和YUV之间的转换

常见的颜色空间

  1. RGB:RGB色彩空间是最常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。这种模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法。

  2. RGB555:RGB555是一种16位的颜色格式,其中红色、绿色和蓝色分别占用5位⁹。

  3. RGB565:RGB565是一种16位的颜色格式,其中红色和蓝色各占5位,绿色占6位。

  4. RGB24:RGB24是一种24位的RGB格式,各分量占用8位,取值范围为0-255。

  5. RGB32:RGB32是一种32位的RGB格式,各分量占用8位,剩下的8位作Alpha通道或者不用。

  6. CIE-RGB:CIE-RGB色彩空间是RGB色彩空间之一,它基于对人眼的一系列实验,以确定人类视觉中的颜色。眼睛对红色、绿色和蓝色的反应是分开的。

  7. HSV:HSV色彩空间(色相,饱和度,明度)是一种将RGB色彩空间中的点表示在圆柱坐标系中的方法。这两种表示法试图做到比基于笛卡尔坐标系几何结构的RGB模型更加直观。

  8. YUV:YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr , YPbPr 等专有名词都可以称为YUV,彼此有重叠。 "Y"表示明亮度(Luminance或Luma),也就是灰阶值,"U"和"V"表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。


总结

通过本文,我们对OpenCV在香橙派AIPro上的应用有了更深入的理解,特别是它的基础数据结构、颜色转换函数和颜色空间。理解这些基础概念对于进行有效的图像处理和计算机视觉任务至关重要。

希望这篇文章能帮助你更好地理解如何在香橙派AIPro上使用OpenCV进行图像处理,以及如何利用基础数据结构、颜色转换函数和颜色空间进行有效的图像分析。如果你有任何问题或需要进一步的帮助,欢迎随时向我们提问。祝你在使用香橙派AIPro和OpenCV的旅程中充满乐趣和收获!

相关推荐
有Li3 分钟前
《治疗前磁共振成像显示的结直肠癌患者的结外扩展及其预后价值》| 文献速递-基于深度学习的癌症风险预测与疾病预后应用
人工智能·深度学习
心 -10 分钟前
C语⾔内存函数
c语言
凉风听雪37 分钟前
CSS\JS实现页面背景气泡logo上浮效果
前端·javascript·css
高小白在敲43 分钟前
数据结构——栈
数据结构
qhahaha~1 小时前
【4.0】vue3中的属性
前端·javascript·vue.js
e^(iπ) + 1 = 0;1 小时前
温湿度模块DHT11(hal库)
c语言·单片机
小言从不摸鱼1 小时前
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
人工智能·python·深度学习·神经网络·机器学习
Thuni_soft1 小时前
万象公文常见问题的处理方法
人工智能·aigc
是谁眉眼1 小时前
vue全局函数和属性总结
前端·javascript·vue.js