OpenCV实验篇:识别图片颜色并绘制轮廓

第三篇:识别图片颜色并绘制轮廓

1. 实验原理

颜色识别的原理:

  • 颜色在图像处理中通常使用 HSV 空间来表示。

    • HSV 空间是基于人类视觉系统的一种颜色模型,其中:

      • H(Hue):色调,表示颜色的种类,例如红色、绿色。

      • S(Saturation):饱和度,表示颜色的纯度。

      • V(Value):明度,表示颜色的亮度。

    • 使用 HSV 空间分割颜色比直接使用 RGB 空间更加直观且效果更好。

轮廓绘制的原理:

  • 轮廓是指图像中具有相同颜色或灰度值的边界。

  • 在 OpenCV 中,通过以下步骤实现轮廓绘制:

    1. 转换图像到 HSV 空间,设定颜色阈值,分割出感兴趣区域。

    2. 使用 cv2.findContours 查找轮廓。

    3. 使用 cv2.drawContours 将轮廓绘制在原图或复制图像上。

2. 实验代码

以下是基于 OpenCV 的完整代码:

import cv2
import numpy as np

# --------------------1. 读取图像--------------------
# 加载目标图片
image = cv2.imread("./color_1.png")
# 调整图片大小,方便显示和处理
image = cv2.resize(image, (0, 0), fx=0.5, fy=0.5)

# --------------------2. 转换到 HSV 空间--------------------
# 将图像从 BGR 空间转换到 HSV 空间
image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# --------------------3. 定义颜色阈值范围--------------------
# 定义要识别的颜色范围(以蓝色为例)
# 这里的值需要根据实际颜色进行调整
lower_blue = np.array([100, 150, 50])  # HSV 下界
upper_blue = np.array([140, 255, 255])  # HSV 上界

# 使用 inRange 函数分割颜色区域
mask = cv2.inRange(image_hsv, lower_blue, upper_blue)

# --------------------4. 图像处理--------------------
# 使用形态学操作去除噪点(可选)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
mask_cleaned = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

# --------------------5. 查找轮廓--------------------
# 在掩码图像中查找轮廓
contours, hierarchy = cv2.findContours(mask_cleaned, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# --------------------6. 绘制轮廓--------------------
# 创建一个原始图像的副本,用于绘制轮廓
image_contours = image.copy()
# 在副本上绘制轮廓
cv2.drawContours(image_contours, contours, -1, (0, 255, 0), 3)

# --------------------7. 显示结果--------------------
# 显示原始图像
cv2.imshow("Original Image", image)
# 显示掩码图像
cv2.imshow("Mask", mask_cleaned)
# 显示绘制了轮廓的图像
cv2.imshow("Contours", image_contours)

# 等待按键退出
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 实验现象

实验效果:

  1. 原始图像窗口:显示原始图像。

  2. 掩码窗口:显示分割后的蓝色区域(白色部分为识别的颜色)。

  3. 轮廓绘制窗口:显示绘制了颜色轮廓的图像。

实验总结:

  1. 使用 HSV 空间可以高效地分割颜色区域。

  2. cv2.findContourscv2.drawContours 可以精确提取和标记物体的边界。

  3. 这种方法可以应用在以下场景:

    • 交通标志识别。

    • 物体检测与跟踪。

    • 色彩分类任务。

相关推荐
牧歌悠悠8 分钟前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
坚毅不拔的柠檬柠檬33 分钟前
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
人工智能·chatgpt·文心一言
坚毅不拔的柠檬柠檬38 分钟前
2025:人工智能重构人类文明的新纪元
人工智能·重构
jixunwulian1 小时前
DeepSeek赋能AI边缘计算网关,开启智能新时代!
人工智能·边缘计算
Archie_IT1 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
大数据追光猿1 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
灵感素材坊2 小时前
解锁音乐创作新技能:AI音乐网站的正确使用方式
人工智能·经验分享·音视频
xinxiyinhe3 小时前
如何设置Cursor中.cursorrules文件
人工智能·python
AI服务老曹3 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
alphaAIstack3 小时前
大语言模型推理能力从何而来?
人工智能·语言模型·自然语言处理