OpenCV中inRange函数

这篇具有很好参考价值的文章主要介绍了OpenCV中inRange函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在OpenCV中,inRange函数用于根据颜色范围从图像中提取特定的颜色区域。这个函数检查输入图像中的每个像素,如果像素值位于指定的范围内,则在输出图像(或掩码)中对应位置的像素被设置为白色(或者说是255),否则被设置为黑色(0)。这种方法在处理颜色过滤、颜色识别等任务时非常有用。

void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);

src:输入图像,通常是经过颜色空间转换后的图像,比如从BGR转换到HSV颜色空间的图像。
lowerb:颜色范围的下界,使用Scalar类型表示。
upperb:颜色范围的上界,使用Scalar类型表示。
dst:输出图像,是一个二值图像,其中符合颜色范围的像素被设置为255,不符合的被设置为0。

红绿蓝在HSV颜色空间中的范围

在HSV颜色空间中,颜色是通过色调(Hue)、饱和度(Saturation)和亮度(Value)来定义的。不同的颜色在HSV空间中占据不同的范围,这使得HSV成为图像处理中进行颜色分割和识别的一个非常实用的颜色空间。以下是红色、绿色和蓝色在HSV颜色空间中的大致范围:

红色(Red)

色调(Hue):红色在HSV颜色圆环的两端,因此它的色调值分布在两个区域:0°到10°(接近360°的值也视为红色,因为360°等价于0°)和170°到180°。
饱和度(Saturation):高饱和度值,大约从50%到100%。
亮度(Value):亮度范围可以很宽,从较暗(约50%)到非常亮(100%)。

绿色(Green)

色调(Hue):绿色的色调值大约在35°到85°之间。
饱和度(Saturation):高饱和度值,大约从50%到100%。
亮度(Value):亮度范围同样可以从较暗到非常亮。

蓝色(Blue)

色调(Hue):蓝色的色调值大约在100°到140°之间。
饱和度(Saturation):高饱和度值,通常从50%到100%。
亮度(Value):亮度同样可以从较暗到非常亮。

注意事项

这些范围是大致估计,实际应用中可能需要根据具体情况进行调整。不同的照明条件和图像质量都可能影响颜色的HSV值。
在实际应用中,经常需要通过实验来确定最佳的HSV范围,以达到最好的颜色识别或分割效果。
特别是对于红色,因为它在HSV色环的两端,处理时可能需要分别考虑两个范围,并将结果合并。

示例1:提取绿色区域

假设有一个需求是从图像中提取绿色区域,首先需要将图像从BGR颜色空间转换到HSV颜色空间,因为HSV颜色空间更适合颜色分割:

void QuickDemo::inrange_demo(Mat &image) {
	Mat hsv;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	Mat mask;
	inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask);
	
	imshow("mask", mask);

示例2:提取红色区域

假设有一个需求是从图像中提取绿色区域,首先需要将图像从BGR颜色空间转换到HSV颜色空间,因为HSV颜色空间更适合颜色分割:

//图像色彩空间转换
void QuickDemo::inrange_demo(Mat &image) {
	Mat hsv;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	Mat mask1, mask2, maskRed;
	//inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask);
	Scalar lower_red1(0, 50, 50);
	Scalar upper_red1(10, 255, 255);
	Scalar lower_red2(170, 50, 50);
	Scalar upper_red2(180, 255, 255);
	

	// 应用第一个红色范围
	inRange(hsv, lower_red1, upper_red1, mask1);
	// 应用第二个红色范围
	inRange(hsv, lower_red2, upper_red2, mask2);

	// 合并两个红色范围的掩码
	bitwise_or(mask1, mask2, maskRed);
	imshow("mask", maskRed);

}

示例3:提取蓝色区域

//图像色彩空间转换
void QuickDemo::inrange_demo(Mat &image) {
	Mat hsv;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	Mat mask;
	inRange(hsv, Scalar(110, 50, 50), Scalar(130, 255, 255), mask);

	imshow("mask", mask);

}

原图

OpenCV中inRange函数,opencv,人工智能,计算机视觉

提取绿色掩膜

OpenCV中inRange函数,opencv,人工智能,计算机视觉

提取蓝色掩膜

OpenCV中inRange函数,opencv,人工智能,计算机视觉

提取红色掩膜

OpenCV中inRange函数,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-830584.html

到了这里,关于OpenCV中inRange函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能算法工程师面试题——之OpenCV必背汇总(四)

    在OpenCV中,图像融合通常指的是将两个或更多图像以某种方式组合在一起,以创建一个新的图像。这个过程可以用于多种目的,比如艺术效果、图像修复或信息增强。实现图像融合的一种常见方法是通过加权求和,也就是每个像素位置上将不同图像的像素值按照一定的权重相

    2024年02月21日
    浏览(40)
  • 阶段五:深度学习和人工智能(学习人工智能的应用领域,如自然语言处理,计算机视觉等)

    Python是人工智能领域最流行的编程语言之一,它具有简单易学、功能强大、库丰富等优点,因此在自然语言处理、计算机视觉等领域得到了广泛应用。 自然语言处理 自然语言处理是人工智能领域的一个重要分支,它主要研究如何让计算机理解和处理人类语言。Python在自然语

    2024年02月04日
    浏览(64)
  • 深入探索人工智能与计算机视觉

    在当今数字化时代,人工智能(AI)和计算机视觉(CV)作为两大前沿技术,正以惊人的速度改变着我们的生活。本文将深入探讨人工智能与计算机视觉的关系、应用以及未来发展方向。 1. 人工智能与计算机视觉的关系 人工智能是一门涵盖众多技术领域的学科,旨在使计算机

    2024年04月14日
    浏览(45)
  • 探索人工智能 | 智能推荐系统 未来没有人比计算机更懂你

    智能推荐系统(Recommendation Systems)利用机器学习和数据挖掘技术,根据用户的兴趣和行为,提供个性化推荐的产品、内容或服务。 智能推荐系统是一种利用机器学习和数据分析技术的应用程序,旨在根据用户的兴趣、偏好和行为模式,向其推荐个性化的产品、服务或内容。

    2024年02月13日
    浏览(36)
  • 【人工智能课程】计算机科学博士作业一

    模型拟合:用深度神经网络拟合一个回归模型。从各种角度对其改进,评价指标为MSE。 掌握技巧: 熟悉并掌握深度学习模型训练的基本技巧。 提高PyTorch的使用熟练度。 掌握改进深度学习的方法。 数据集下载: Kaggle下载数据: https://www.kaggle.com/competitions/ml2022spring-hw1 百度云

    2024年01月23日
    浏览(41)
  • 【人工智能课程】计算机科学博士作业三

    来源:李宏毅2022课程第10课的作业 图片攻击是指故意对数字图像进行修改,以使机器学习模型产生错误的输出或者产生预期之外的结果。这种攻击是通过将微小的、通常对人类难以察觉的扰动应用于输入图像来实现的。图片攻击是对深度学习系统中的鲁棒性和安全性的一种测

    2024年03月16日
    浏览(56)
  • 人工智能与计算机辅助决策的技术融合

    人工智能(Artificial Intelligence, AI)和计算机辅助决策(Computer-Aided Decision, CAD)是两个不同的领域,但它们之间存在密切的联系和相互作用。人工智能主要关注于模拟和创造人类智能的机器,包括学习、理解自然语言、视觉识别、推理和决策等方面。而计算机辅助决策则关注于利用

    2024年02月22日
    浏览(46)
  • hnu计算机与人工智能概论5.6

    最近有点忙,好久没更新了,大家见谅!最后一关howell也做不出来  第1关:数据分析基础 1.将scores.xls文件读到名为df的dataframe中 2.添加平均分列:考勤、实验操作、实验报告的平均 3.输出前3行学生的平均分列表,控制小数点后两位 4.输出学生人数和班级数 5.分别输出实验报

    2024年02月04日
    浏览(37)
  • hnu计算机与人工智能概论答案3.8

    连夜更新,求求关注!! 写在前面:这一课难度较低,报错时多看看冒号和缩进有无错误,祝大家做题顺利!!! 第1关:python分支入门基础 根据提示,在右侧编辑器补充代码,完成分支程序设计(用函数调用的方式来实现)。 第1题: 闰年的判断:判断某一年是否是闰年,

    2024年02月08日
    浏览(32)
  • hnu计算机与人工智能概论答案3.15

     终于肝完了!有一说一,这一次难度肉眼可见的提升,终于明白程序员为什么会秃顶了(头发真的禁不住薅啊),祝大家好运! 第1关:循环结构-while与for循环 第1题 编程计算如下公式的值1^2+3^2+5^2+...+995^2+997^2+999^2并输出结果 第2题 用 while 语句完成程序逻辑,求如下算法可

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包