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个像素。通过调整颜色范围、滤波参数和轮廓筛选条件,可以对不同颜色和形状的物体进行识别与轮廓绘制。

相关推荐
技术小黑15 小时前
CNN算法实战系列08 | ResNeXt-50算法实战与猴痘病识别
人工智能·算法·cnn
四川国阜传动设备有限公司15 小时前
如何根据电机功率正确计算减速机输出扭矩?
人工智能·搜索引擎
格子软件15 小时前
2026年GEO优化系统源码级状态机与多模型调度拆解
java·前端·vue.js·人工智能·vue·geo
数据百晓通15 小时前
重构数据治理范式:2026 主流企业级数据治理平台对标与精准选型
大数据·人工智能·重构
CTA终结者15 小时前
2026年AI量化提效,工具重点要按阶段调整
人工智能·python
zhangfeng113315 小时前
算子开发 Overwrite 覆盖/替换模式 Accumulate 累加模式,性能对比 memset错误 bat_alloc 错误
c语言·人工智能·gnu·算子开发
zzz_236816 小时前
从 200 行规则到一条好渠——Agent 工程化的踩坑与解法
人工智能·agent
Bruce_Liuxiaowei16 小时前
2026年7月第1周网络安全形势周报
人工智能·安全·web安全·ai·智能体
A.说学逗唱的Coke16 小时前
【大模型专题】Claude Haiku vs Sonnet vs Opus:三款模型深度对比与选型指南(2026最新)
大数据·人工智能
梦想的旅途216 小时前
基于RPA技术的企业微信自动化接口设计思路与应用实践
人工智能·机器人·自动化·企业微信·rpa