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. 这种方法可以应用在以下场景:

    • 交通标志识别。

    • 物体检测与跟踪。

    • 色彩分类任务。

相关推荐
百度一见14 分钟前
以AI见未来,以技筑新程|百度一见受邀参与2026中国机器人及人工智能大赛关键技术研讨会
人工智能·机器人
小陈工1 小时前
Python安全编程实践:常见漏洞与防护措施
运维·开发语言·人工智能·python·安全·django·开源
NGINX开源社区2 小时前
使用 NGINX 作为 AI Proxy
大数据·人工智能·nginx
腾讯蓝鲸智云7 小时前
嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
运维·人工智能·信息可视化·自动化
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-03-25
人工智能·经验分享·深度学习·神经网络·产品运营
蟑螂恶霸8 小时前
Windows安装OpenCV 4.8
人工智能·windows·opencv
枫叶林FYL8 小时前
【自然语言处理 NLP】第二章 经典NLP算法与特征工程(Classical NLP Algorithms)
人工智能·深度学习·机器学习
非著名程序员8 小时前
阿里云重磅上线 Qoder 专家团模式,AI 编程进入组团作战时代
人工智能
AEIC学术交流中心9 小时前
【快速EI检索 | IEEE出版】2026年人工智能、智能系统与信息安全国际学术会议(AISIS 2026)
人工智能
火山引擎开发者社区9 小时前
李诞、何同学、小Lin说同台直播,解锁养虾新玩法!
人工智能