【香橙派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的旅程中充满乐趣和收获!

相关推荐
Mr.简锋2 分钟前
vs2022搭建opencv开发环境
人工智能·opencv·计算机视觉
guokanglun4 分钟前
Vue.js动态组件使用
前端·javascript·vue.js
m0_743106467 分钟前
论文笔记:no pose,no problem-基于dust3r输出GS参数实现unpose稀疏重建
论文阅读·深度学习·计算机视觉·3d·几何学
shinelord明7 分钟前
【再谈设计模式】建造者模式~对象构建的指挥家
开发语言·数据结构·设计模式
weixin_443290698 分钟前
【论文阅读】InstructPix2Pix: Learning to Follow Image Editing Instructions
论文阅读·人工智能·计算机视觉
黑不拉几的小白兔23 分钟前
PTA部分题目C++重练
开发语言·c++·算法
写bug的小屁孩25 分钟前
websocket身份验证
开发语言·网络·c++·qt·websocket·网络协议·qt6.3
我认不到你33 分钟前
antd proFromSelect 懒加载+模糊查询
前端·javascript·react.js·typescript
scc214043 分钟前
spark的学习-06
javascript·学习·spark
chordful1 小时前
Leetcode热题100-32 最长有效括号
c++·算法·leetcode·动态规划