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

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

来源:花匠小妙招 时间:2024-12-14 15:57

肉包之 已于 2024-12-12 20:55:54 修改

于 2024-12-12 20:53:34 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

第三篇:识别图片颜色并绘制轮廓 1. 实验原理

颜色识别的原理:

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

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

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

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

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

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

轮廓绘制的原理:

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

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

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

使用 cv2.findContours 查找轮廓。

使用 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. 实验现象

实验效果:

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

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

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

实验总结:

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

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

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

交通标志识别。

物体检测与跟踪。

色彩分类任务。

相关知识

利用OpenCV根据图片识别环境的亮度
深入浅出:利用OpenCV实现手写数字识别之旅
基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
python 手写字识别
基于机器视觉的昆虫种类及计数检测研究
基于机器视觉的害虫种类及计数检测研究
基于Python机器视觉的远程害虫种类识别和数量检测系统 报告+项目源码及数据
opencv
基于OpenCV的鲜花的图像分类系统详细设计与具体代码实现
陌上花开:古风CG插画绘制技法精解(花卉篇)

网址: OpenCV实验篇:识别图片颜色并绘制轮廓 https://www.huajiangbk.com/newsview1094040.html

所属分类:花卉
上一篇: OpenCV识别图片颜色并绘制轮
下一篇: 05篇

推荐分享