首页 > 编程知识 正文

python识别颜色,opencv颜色识别原理

时间:2023-05-06 11:50:04 阅读:144448 作者:4853

目标

在本教程中,您将学习以下内容:

使用OpenCV cv : inRange函数执行基本阈值操作。

根据HSV颜色空间的像素值范围检测对象。

原理

在上一个教程中,您学习了如何使用cv : threshold函数执行阈值处理。

在本教程中,您将学习如何使用cv :inRange函数来执行此操作。

概念不变,但现在添加了所需的一系列像素值。

HSV色彩空间

色调/饱和度/亮度(HSV )颜色空间是表示颜色空间的模型,如RGB颜色模型。 根据色相通道建模颜色类型,对于需要按颜色分割对象的图像处理任务非常有用。 色度的变化表示颜色成分的多少。 亮度通道表示颜色的亮度。 下图显示了HSV圆柱图。

由于RGB色彩空间中的颜色使用三个通道对进行编码,因此基于颜色分割图像中的对象更加困难。 (HSV中只有Hue的一个通道表示颜色)

有关使用cv : cvtColor函数将一个颜色空间转换为另一个颜色空间的表达式,请参见颜色转换

inRange ) )函数说明

语音识别(inputarraysrc,

InputArray lowerb,

输入阵列更新器,

OutputArray dst;

第一个参数:输入图像

第二个参数: h、s和v的最小值,例如scalar(low_h、low_S和low_V ) ) )。

第三个参数: h、s和v的最大值,例如scalar(low_h、low_S和low_V ) )。

第四个参数:输出图像必须与输入图像大小相同,且为CV_8U类

源代码

#include iostream

#include 'opencv2/imgproc.hpp '

#include 'opencv2/highgui.hpp '

using namespace cv;

int main () )

{

videocapturecapture(0;

//【2】循环显示各帧

while(1)。

{

马特图像; //定义保存各帧图像的Mat变量

捕获图像; //读取当前帧

//====================================

Mat hsv=image.clone (;

Mat frame_threshold=image.clone (;

cvtcolor(image、hsv、COLOR_BGR2HSV );

双低_ h=35;

双低_ s=43;

双低_ v=46;

双精度high _ h=77;

双精度high _ s=255;

双精度high _ v=255;

inrange(HSV,scalar ) low_h,low_S,low_V ),scalar (high _ s,high_V ),frame_threshold ) )。

imshow(ini )、image );

imshow(out1)、hsv );

imshow(out2)、frame_threshold );

等待密钥(30; //延迟30ms

}

返回0;

}

步骤的说明

从默认的或提供的捕获设备捕获视频流。

int main () )

{

videocapturecapture(0;

//【2】循环显示各帧

while(1)。

{

马特图像; //定义保存各帧图像的Mat变量

捕获图像; //读取当前帧

//====================================

定义图像

Mat hsv=image.clone (;

Mat frame_threshold=image.clone (;

转换颜色空间

cvtcolor(image、hsv、COLOR_BGR2HSV );

设定HSV值的范围

双低_ h=35;

双低_ s=43;

双低_ v=46;

双精度high _ h=77;

双精度high _ s=255;

双精度high _ v=255;

基于HSV范围的图像检测

inrange(HSV,scalar ) low_h,low_S,low_V ),scalar (high _ s,high_V ),frame_threshold ) )。

显示结果

imshow(ini )、image );

imshow(out1)、hsv );

imshow(out2)、frame_threshold );

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。