Opencv识别图片颜色并绘制轮廓

实验原理

在计算机视觉中,颜色识别是一项基础而重要的任务。通过颜色识别,我们可以从图像中提取出特定颜色的区域,进而对这些区域进行分析、处理或标记。本实验利用OpenCV库,通过转换颜色空间、设定颜色范围、滤波、形态学变换以及寻找轮廓等步骤,实现了对图像中特定颜色(本例为黄色)的识别,并在识别到的区域上绘制轮廓。

  1. 颜色空间转换:首先,将图像从BGR颜色空间转换到HSV颜色空间。HSV颜色空间更符合人类对颜色的感知,且更容易进行颜色范围的划分。

  2. 颜色范围设定与筛选 :在HSV颜色空间中,设定要识别的颜色的HSV范围,并利用cv2.inRange函数筛选出该颜色范围内的像素。

  3. 滤波与形态学变换:为了去除噪声和不必要的细节,对筛选出的颜色区域进行中值滤波。接着,进行形态学开运算(先腐蚀后膨胀),以进一步去除小物体、分离物体、平滑较大物体的边界。

  4. 寻找轮廓 :利用cv2.findContours函数在滤波和形态学变换后的图像中寻找轮廓。

  5. 轮廓绘制:遍历所有找到的轮廓,根据轮廓的面积筛选出符合条件的轮廓,并在原图像的副本上绘制这些轮廓。

实验代码
python 复制代码
import cv2
import numpy as np

# 1、输入图片
img = cv2.imread("./color_1.png")
img = cv2.resize(img, (0, 0), fx=0.7, fy=0.7)

# 2、转换HSV颜色空间
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 3、设定要识别的颜色范围,并利用inRange找到该范围
yellow_min = np.array([26, 43, 46])
yellow_max = np.array([34, 255, 255])
img_color = cv2.inRange(img_hsv, yellow_min, yellow_max)

# 4、进行滤波
img_blur = cv2.medianBlur(img_color, 7)

# 5、形态学变换------开运算 先腐蚀再膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
img_erode = cv2.erode(img_blur, kernel)
img_open = cv2.dilate(img_erode, kernel)

# 6、寻找轮廓
contours, _ = cv2.findContours(img_open, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 7、遍历所有轮廓并绘制符合条件的轮廓
img_copy = img.copy()
for i in contours:
    if cv2.contourArea(i) < 200 or cv2.contourArea(i) > 200000:
        continue
    cv2.drawContours(img_copy, [i], 0, (0, 0, 255), 2)

# 8、输出图片
cv2.imshow('Original Image', img)
cv2.imshow('Contours on Image', img_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()

实验现象

运行上述代码后,将出现两个窗口。一个窗口显示原始图像,另一个窗口显示在原始图像副本上绘制的黄色区域的轮廓。轮廓以红色线条表示,线条宽度为2个像素。通过调整颜色范围、滤波参数和轮廓筛选条件,可以对不同颜色和形状的物体进行识别与轮廓绘制。

相关推荐
xier_ran3 分钟前
深度学习:深入理解 Softmax 激活函数
人工智能·深度学习
aitoolhub26 分钟前
重塑机器人未来:空间智能驱动产业智能化升级
大数据·人工智能·深度学习·机器学习·机器人·aigc
放羊郎28 分钟前
机器人自主导航方案概述
人工智能·算法·机器人·slam·建图
淬炼之火29 分钟前
阅读:基于深度学习的红外可见光图像融合综述
图像处理·深度学习·机器学习·计算机视觉·特征融合·红外图像识别
极客BIM工作室35 分钟前
思维链(CoT)的本质:无需架构调整,仅靠提示工程激活大模型推理能力
人工智能·机器学习·架构
放羊郎1 小时前
一款基于鲁班猫和STM32的自主导航实践
人工智能·数码相机·slam·视觉slam·建图·激光slam
eacape1 小时前
什么是RAG?啥又是向量?带你从周杰伦的角度读懂.....
人工智能·agent
GoldenSpider.AI1 小时前
Muon 优化器:通过正交化动量矩阵革命性地加速 AI 大模型训练
人工智能·svd·muon·adamw
三条猫1 小时前
AI 大模型如何给 CAD 3D 模型“建立语义”?
人工智能·机器学习·3d·ai·大模型·cad
bst@微胖子1 小时前
ModelScope微调模型
人工智能·深度学习·bert