利用OpenCV进行图像特征提取:颜色与形状分析

白榆
白榆
发布时间:2026-10-16 | 4人浏览过
原创

本文介绍如何使用OpenCV从图像中提取颜色和形状特征。通过转换至HSV、LAB、YCrCb等色彩空间,利用cv2.inRange进行颜色屏蔽,并结合cv2.findContours提取形状轮廓。内容涵盖色彩空间原理及具体代码实现,帮助开发者掌握基础特征提取技术。

图像处理

图像处理的核心在于从原始图像中提取关键信息,在有效减少数据量的同时,保留能够描述图像特征的像素数据。

接下来将介绍从图像中提取颜色、形状及纹理特征的具体方法。

1. 颜色特征提取

在处理图像项目时,色彩空间通常是首要分析对象,其中RGB色彩空间最为常用。利用OpenCV,我们可以将图像从RGB空间转换为HSV、LAB、灰度、YCrCb或CMYK等其他色彩空间,以便更好地进行特征分析。

a. HSV(色相、饱和度、明度)色彩空间

  • 色调(H):描述颜色的主波长,用于指定具体的颜色通道。
  • 饱和度(S):描述颜色的纯度或色调的强度。
  • 明度(V):描述颜色的亮度或强度。
import cv2
from google.colab.patches import cv2_imshow

image = cv2.imread(image_file)
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2_imshow(hsv_image)

下图展示了RGB与HSV色彩空间的对比关系。

b. LAB色彩空间

  • L分量:描述颜色的亮度,通常与强度互换使用。
  • A分量:表示颜色成分范围,涵盖从绿色到品红色的变化。
  • B分量:表示颜色成分范围,涵盖从蓝色到黄色的变化。
import cv2
from google.colab.patches import cv2_imshow

image = cv2.imread(image_file)
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
cv2_imshow(lab_image)

下图展示了RGB与LAB色彩空间的可视化效果。

c. YCrCb色彩空间

  • Y分量:表示从RGB色彩空间经过伽马校正后获得的亮度信息。
  • Cr分量:描述红色(R)分量与亮度之间的差异。
  • Cb分量:描述蓝色(B)分量与亮度之间的差异。
import cv2
from google.colab.patches import cv2_imshow

image = cv2.imread(image_file)
ycrcb_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)
cv2_imshow(ycrcb_image)

下图展示了RGB与YCrCb色彩空间的对比。

在识别或探索了多种图像色彩空间,并确定仅对特定通道感兴趣后,可以使用cv2.inRange()函数屏蔽不需要的像素。这一方法在HSV色彩空间中尤为实用,能够有效分离目标颜色。

import cv2
from google.colab.patches import cv2_imshow

# Reading the original image
image_spot = cv2.imread(image_file)
cv2_imshow(image_spot)

# Converting it to HSV color space
hsv_image_spot = cv2.cvtColor(image_spot, cv2.COLOR_BGR2HSV)
cv2_imshow(hsv_image_spot)

# Setting the black pixel mask and perform bitwise_and to get only the black pixels
mask = cv2.inRange(hsv_image_spot, (0, 0, 0), (180, 255, 40))
masked = cv2.bitwise_and(hsv_image_spot, hsv_image_spot, mask=mask)
cv2_imshow(masked)

上图展示了使用cv2.inRange()函数在RGB、HSV及掩膜图像中检索黑点的效果。

2. 形状特征提取

在充分分析颜色特征后,若需提取图像中的形状(例如区分不同类型的杯子,且颜色并非关键因素),可尝试将图像转换至其他色彩空间,观察哪种空间能更突出对象的边缘或形状。随后,使用cv2.findContours函数即可检索图像中的所有轮廓。具体用法可参考OpenCV官方文档。

总结

本文介绍了利用OpenCV进行颜色和形状特征提取的基本方法。更多OpenCV特征提取相关内容,请搜索本站历史文章或继续浏览后续文章。感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表