使用Python和OpenCV在图像中进行颜色识别

Python 中的 OpenCV 是一个开源库,基本上用于图像和视频处理。它不仅支持 Windows、Linux、Mac 等各种系统,还可以使用 Python、C++、Java 等多种编程语言运行。OpenCV 还允许我们在图像中识别颜色。不知道如何在图像中找到这些颜色吗?

图像中的颜色识别

显示器或电视屏幕基本上产生三种类型的颜色,即红、绿和蓝(注:此处对应原文描述)。但这三种颜色的组合和强度构成了各种颜色。因此,每种颜色都有其独特的 HSV 颜色代码。为了在给定图像中找到指定的颜色,我们需要使用该颜色的下限和上限 HSV 值。

示例: 为了在图像中找到绿色,我们需要为绿色指定下限和上限 HSV 颜色代码,如下所示。

lower=np.array([50, 100,100])
upper=np.array([70, 255, 255])

如何在 OpenCV 中识别颜色?

让我们试着实际实现这个方法。例如,考虑下面给出的源代码。在这个源代码中,我们将在 shapes.jpg 图像中查找绿色。下面示例中使用的图像

!image

你可以下载这张图片,并将其保存在你当前编写的 Python 文件所在的同一文件夹中。

实现:

# Python program to identify
#color in images

# Importing the libraries OpenCV and numpy
import cv2
import numpy as np

# Read the images
img = cv2.imread("Resources/shapes.jpg")

# Resizing the image
image = cv2.resize(img, (700, 600))

# Convert Image to Image HSV
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Defining lower and upper bound HSV values
lower = np.array([50, 100, 100])
upper = np.array([70, 255, 255])

# Defining mask for detecting color
mask = cv2.inRange(hsv, lower, upper)

# Display Image and Mask
cv2.imshow("Image", image)
cv2.imshow("Mask", mask)

# Make python sleep for unlimited time
cv2.waitKey(0)

输出:

!image

从 RGB 代码中查找 HSV 代码

不知道如何找到这个独特的 HSV 颜色代码?只需编写下面给出的程序,就可以从 RGB 颜色代码中找到 HSV 颜色代码。你可以从这里选择你想要的颜色对应的 RGB 颜色代码。找到想要查找的颜色的 RGB 代码后,编写这个程序来获取该颜色的 HSV 代码。

示例: 在下面的源代码中,我们找到了绿色的 HSV 值。绿色的 RGB 值是 [0, 255, 0]。

# Python programs to find
# unique HSV code for color

# Importing the libraries openCV & numpy
import cv2
import numpy as np

# Get green color
green = np.uint8([[[0, 255, 0]]])

# Convert Green color to Green HSV
hsv_green = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)

# Print HSV Value for Green color
print(hsv_green)

# Make python sleep for unlimited time
cv2.waitKey(0)

输出:

!image

一旦找到了特定颜色的唯一 HSV 代码,就可以按照以下步骤获取该颜色的 HSV 下限和上限。

lower = [h-10, 100, 100]
upper = [h+10, 255, 255]

示例: 对于绿色,HSV 颜色代码是 [60, 255, 255]。因此,该颜色的 HSV 下限和上限将如下所示。

lower = [50, 100, 100]
upper = [70, 255, 255]
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/42825.html
点赞
0.00 平均评分 (0% 分数) - 0