目标
在本教程中,您将学习如何:

使用OpenCV cv :: inRange函数执行基本阈值操作。
基于HSV颜色空间中的像素值范围来检测对象。
原理
在上一个教程中,我们学习了如何使用cv :: threshold函数执行阈值处理。
在本教程中,我们将学习如何使用cv ::inRange函数来完成它。
概念保持不变,但现在我们添加了一系列我们需要的像素值。
HSV色彩空间
HSV(色相/饱和度/明度)颜色空间是表示类似于RGB颜色模型的颜色空间的模型。根据色相通道(Channel)对颜色类型进行建模,因此在需要根据颜色对对象进行分割的图像处理任务中非常有用。饱和度的变化代表颜色成分的多少。明度通道描述颜色的亮度。下图显示了HSV圆柱图。

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

在颜色转换中描述了使用cv :: cvtColor函数从一个颜色空间转换到另一个颜色空间的公式

inRange()函数讲解
void inRange(    InputArray src,
                InputArray lowerb,  
                InputArray upperb,   
                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()
{
    VideoCapture capture(0);
    //【2】循环显示每一帧
    while (1)                                                    
    {                                                            
        Mat image;  //定义一个Mat变量,用于存储每一帧的图像           
        capture >> image;  //读取当前帧                            
//================================================================
        Mat hsv = image.clone();
        Mat frame_threshold = image.clone();
        cvtColor(image, hsv, COLOR_BGR2HSV);
        double low_H = 35;
        double low_S = 43;
        double low_V = 46;
        double high_H = 77;
        double high_S = 255;
        double high_V = 255;
        inRange(hsv, Scalar(low_H, low_S, low_V), Scalar(high_H, high_S, high_V), frame_threshold);

imshow("ini", image);
        imshow("out1", hsv);
        imshow("out2", frame_threshold);
        waitKey(30);  //延时30ms                              
    }
    return 0;
}

程序说明
从默认或提供的捕获设备捕获视频流。
int main()
{
    VideoCapture capture(0);
    //【2】循环显示每一帧
    while (1)                                                    
    {                                                            
        Mat image;  //定义一个Mat变量,用于存储每一帧的图像       
        capture >> image;  //读取当前帧                         
//================================================================

定义图像
        Mat hsv = image.clone();
        Mat frame_threshold = image.clone();

转换颜色空间
        cvtColor(image, hsv, COLOR_BGR2HSV);
设置HSV值的范围
        double low_H = 35;
        double low_S = 43;
        double low_V = 46;
        double high_H = 77;
        double high_S = 255;
        double high_V = 255;


根据HSV范围检测图像
inRange(hsv, Scalar(low_H, low_S, low_V), Scalar(high_H, high_S, high_V), frame_threshold);

显示结果
        imshow("ini", image);
        imshow("out1", hsv);
        imshow("out2", frame_threshold);

opencv利用HSV图像进行颜色筛选相关推荐

  1. python opencv 利用HSV,YUV(YCbCr)实现皮肤检测与抠图,与磨皮美颜

    皮肤检测与抠图 皮肤检测的方法很多,这里写的是最简单的方法,感兴趣的同学可以自己加上椭圆检测,膨胀腐蚀等,使得检测与抠图更加精确.github上许多人脸识别的算法,可以多学习那些. HSV颜色空间 h ...

  2. OpenCV图像处理——把图像指定颜色变成透明

    概述 PNG格式的图像是有透明通道,用PS打开的时候,透明的地方是没有像素的,下面在ps里面显示黑色背景与透明背景的效果. 黑色背景: 白色背景: 透明背景: 把指定颜色变成透明 代码: void t ...

  3. 图像处理——HSV图像应用(matlab)

    本文主要讲解如何利用HSV图像识别蘑菇上的异物,并去除异物 一.基础图像处理 进行一系列处理,找到蘑菇位置截图,以免背景光照等因素对异物判断造成影响 %读取图像 img_name = 'picture ...

  4. Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)展示,以及利用HSV标记指定的颜色

    本文简单介绍了几个常见的色彩空间转换: 因为HSV应用非常广泛,所以单独介绍其强大的功能: 本文用到的两个原始图像,如下图所示: 目录 一.Opencv色彩空间(GRAY.XYZ.HSV.YCrCb. ...

  5. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化

    python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...

  6. 第一部分 利用opencv基于hsv颜色的目标提取效果和python代码

    因为做毕设,想找个地方记录一下毕设当初写的东西. 第一部分,HSV模型进行颜色提取 先放效果图: 图1 左右摄像头采集到的乒乓球图像 图 2 HSV模型颜色提取器 图 2 HSV模型提取的效果图 提取 ...

  7. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

  8. opencv实战3-处理图像的颜色

    1 处理图像的颜色 1.1 提取指定的颜色区域 cv::floodFill() 函数 1.2 分割图像 cv::grabCut()函数,用于从静态图像中提取前景物体. 1.3 转换颜色的表示方法 HS ...

  9. OpenCV计算机视觉编程篇三《处理图像的颜色》

    前言 前期回顾: OpenCV计算机视觉编程篇二<操作像素> 上面这篇里面写了操作像素相关. 本章包括以下内容: 用策略设计模式比较颜色: 用 GrabCut 算法分割图像: 转换颜色表示 ...

最新文章

  1. python生成时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例
  2. for vue 一行2列_vue常见面试题汇总
  3. java学习笔记14--多线程编程基础1
  4. NYOJ5056_黑色帽子(水题)
  5. sigmoid函数解决溢出_梯度消失和梯度爆炸及解决方法
  6. 垃圾回收算法优缺点对比
  7. 创建永远隐藏的隐藏帐号
  8. Numpy Chararray对象
  9. 信息安全——对称算法与非对称算法
  10. WCF 点滴启示录系列(一)
  11. zabbix自定义监控nginx
  12. 如何批量将 Excel 文档转为 Txt 文本格式
  13. 智慧职教mooc学院计算机文化基础答案,智慧职教MOOC学院-刷课分析
  14. Windows网上邻居 授权访问设置
  15. 测量string变量长度函数_测量字符串长度的函数
  16. java程序员面试自身优缺点,详细说明
  17. 手机便签怎么对待办分类文件夹加密
  18. H5链接调起支付宝APP支付(个人收款)
  19. norms matlab
  20. Vim的插件管理利器pathogen

热门文章

  1. java计算机毕业设计线上投保的设计源码+系统+数据库+lw文档+mybatis+运行部署
  2. 华为 AP3010DN-V2 使用
  3. 公众号涨粉的3大技巧
  4. 一个好的项目组大概要具有的几个特点!
  5. SSM上传,下载,在线播放视频
  6. [转载]怎样选择职业
  7. oracle中角色的用户和权限管理,用户角色与权限控制
  8. AbsoluteOrientationSensor
  9. 已拿字节、腾讯、墨墨 offer,音视频开发进阶指南pdf
  10. android手机自动打开pdf文件夹,一种告诉您如何在Android手机上打开PDF文件的方法...