基于颜色的图像识别

基于颜色的图像识别

上一期我们介绍了 CreateTrackbar 的使用方法。链接如下:

[]: https://blog.csdn.net/Daylight_V/article/details/135110717?spm=1001.2014.3001.5501

背景:这一期我们就要利用这个去进行颜色识别。在之前的图像识别时,我们总会面对许多问题,诸如在形态学操作时,无法很好分离出物体,亦或是无法很好保留最初物体的轮廓,往往对阈值的挑选有着更严苛的要求,同时大大降低了其普适性。

  • 颜色识别的基本流程

读取图像 — 颜色空间转换 — 筛选阈值 — 形态学操作 — 轮廓识别

  • 核心API(一)
void cvtColor(输入图像,
			  输出图像,
			  颜色转换方式);//其中颜色转换方式有转HSV ,GRAY等等

在这里插入图片描述
不同于之前的图像识别,在颜色识别时,一般转成HSV图像,这是因为将图像转换为HSV色彩空间的主要原因是HSV色彩空间更符合人类对颜色的感知,它包含了色相(Hue)、饱和度(Saturation)和亮度(Value)三个分量,可以更好地描述颜色的属性。在HSV色彩空间中,色相表示颜色的种类,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。相比之下,BGR色彩空间是RGB色彩模型在计算机领域的一种实现,它不直观地描述颜色的属性,不方便进行颜色的区分和识别。

  • 核心API(二)
void inRange(输入图像,
   			 阈值下限,
   			 阈值上限,
   			 输出图像);

其中,在选择阈值上限以及下限时,使用的是Scalar(H, S, V)
在这里插入图片描述
HSV颜色空间中,颜色的范围通常是通过调整H(色相)、S(饱和度)、V(亮度/明度)三个通道的阈值来确定的。下面是一些常见颜色的HSV范围:

  • 红色

  • H: 0-10 和 170-180

  • S: 50-255

  • V: 50-255

  • 橙色

  • H: 11-25

  • S: 50-255

  • V: 50-255

  • 黄色

  • H: 26-35

  • S: 50-255

  • V: 50-255

  • 绿色

  • H: 36-85

  • S: 50-255

  • V: 50-255

  • 青色

  • H: 86-125

  • S: 50-255

  • V: 50-255

  • 蓝色

  • H: 126-145

  • S: 50-255

  • V: 50-255

  • 紫色

  • H: 146-165

  • S: 50-255

  • V: 50-255

    往往在真实图像中,我们无法得到标准的红蓝黄色,因此需要用滑动条来一点点try,得到最好的效果。

  • 下面展示实战

请添加图片描述
分别将不同颜色的形状识别出来
代码

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int lowH = 11;
int highH = 20;
int lowS = 53;
int highS = 158;
int lowV = 156;
int highV = 215;//以上作为筛选阈值的变量

int main()
{
	Mat src = imread("color.png");//读取图像
	Mat dst;
	Mat threimage;
	
	namedWindow("adjust");
	createTrackbar("lowH", "adjust", &lowH, 180);
	createTrackbar("highH", "adjust", &highH, 180);
	createTrackbar("lowS", "adjust", &lowS, 255);
	createTrackbar("highS", "adjust", &highS, 255);
	createTrackbar("lowV", "adjust", &lowV, 255);
	createTrackbar("highV", "adjust", &highV, 255);


	while (1)
	{
		cvtColor(src, dst, COLOR_BGR2HSV);//转成HSV
		
		inRange(dst, Scalar(lowH, lowS, lowV), Scalar(highH, highS, highV), threimage);//颜色筛选

		imshow("reslut",threimage);

		waitKey(1);
	}
	return 0;
}

效果
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到通过调节阈值,可以轻松做到图像识别,或者是图像分割。

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于aforge的图像识别程序是一种利用计算机视觉技术实现的自动图像识别应用程序,它采用了aforge人工智能框架来对图像进行处理和分析,从而能够自动识别出图像中的目标物体、人脸、文字等信息,具有广泛的应用价值。 基于aforge的图像识别程序的工作原理是:先将待识别的图像进行预处理,如裁剪、缩放、去噪等操作,使其符合算法处理的要求。然后,根据不同的需求选用不同的算法进行图像分析和处理,如特征点检测、颜色分析、形状匹配等。最终,将分析得到的结果与预先设置的策略进行比对,确定目标物体的位置、尺寸和属性等信息。 基于aforge的图像识别程序可以应用于各种领域,如工业自动化、智能监控、医学影像分析等。例如,在工业生产中,可以用于检测产品的缺陷、质量问题等;在智能监控中,可以用于识别行人、车辆等信息,实现基于视觉的安防措施;在医学影像分析中,可以用于识别医学图像中的病变、器官等信息,提升医疗诊断的准确性。 总之,基于aforge的图像识别程序是一种十分有前景和潜力的应用程序,能够运用先进的计算机视觉技术实现自动化的图像识别,为现代化社会的进步和发展贡献巨大。 ### 回答2: 基于aforge库的图像识别程序可用于在图像、视频或摄像头实时流中识别物体、人脸、文字等。 该程序的主要流程为:首先加载所需的aforge库,然后打开要识别的图像或视频文件,对其进行归一化、分割等处理操作。接着将处理后的图像通过训练好的算法进行特征提取和分类,从而确定图像中是否存在所需识别的物体、人脸等。 对于物体识别,通常使用SIFT或SURF算法进行特征提取;人脸识别则使用Haar-cascade或基于深度学习的卷积神经网络(CNN)等算法。 在实际使用中,使用者可以根据实际需求调整参数,提高图像的识别准确度,例如改变图像的亮度、对比度、尺寸等,或更改特征提取算法的参数。 总之,基于aforge的图像识别程序可以广泛应用于安防监控、智能家居、无人驾驶、医疗影像等各种领域,为人们的生活和工作提供更便捷、高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值