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

相关推荐
字节跳动_离青5 分钟前
智能的路径
人工智能
王上上15 分钟前
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
论文阅读·人工智能·cnn
Channing Lewis27 分钟前
如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?
大数据·人工智能·科技
禺垣27 分钟前
区块链技术概述
大数据·人工智能·分布式·物联网·去中心化·区块链
IT科技那点事儿36 分钟前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
人工智能·安全
新智元44 分钟前
美 IT 业裁员狂飙 35%,「硅谷梦」彻底崩塌!打工人怒喷 PIP
人工智能·openai
新智元1 小时前
乔布斯挚友去世!胰腺癌再夺硅谷天才,曾写下苹果「创世代码」
人工智能·openai
春末的南方城市1 小时前
中山大学&美团&港科大提出首个音频驱动多人对话视频生成MultiTalk,输入一个音频和提示,即可生成对应唇部、音频交互视频。
人工智能·python·深度学习·计算机视觉·transformer
春末的南方城市1 小时前
Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
人工智能·计算机视觉·自然语言处理·aigc·音视频
程序边界1 小时前
全球人工智能技术大会(GAITC 2025):技术前沿与产业融合的深度交响
人工智能