天天看点

python红色图形识别,如何使用python opencv检测图像上的红色粒子?

使用HSV颜色空间是非常好的。如果显示图像的色调和饱和度分量,您将看到红色粒子具有相对较大的色调和较小的饱和度。在

顺便说一句,你的图像分辨率相当大。我将减少采样,以便将图像拟合到post中,同时最小化处理时间。首先让我们加载您的图像,将其调整到25%的分辨率,然后提取出HSV组件:import cv2

import numpy as np

im = cv2.imread('sample.png')

im_resize = cv2.resize(im, None, None, 0.25, 0.25)

out = cv2.cvtColor(im_resize, cv2.COLOR_BGR2HSV)

stacked = np.hstack([out[...,0], out[...,1]])

cv2.imshow("Hue & Saturation", stacked)

cv2.waitKey(0)

cv2.destroyAllWindows()

我还将色调和饱和度通道叠加到一个图像中,这样我们就可以看到它的样子,并将其显示在屏幕上。在

我们得到这样的图像:

python红色图形识别,如何使用python opencv检测图像上的红色粒子?

与图像的其余部分相比,相对较大的色调分量与低饱和度分量的组合是独特的。让我们做一些简单的阈值提取那些分量,我们在这些分量中查找色调分量大于一个阈值,饱和度分量小于另一个阈值的区域:

^{pr2}$

我设置了一些优化的阈值,然后使用^{}将这两个条件组合在一起。因为图像现在是bool类型,要显示图像,它们应该是无符号或浮点类型,我们将图像转换为uint8,然后乘以255。在

我们现在得到的图像是:

python红色图形识别,如何使用python opencv检测图像上的红色粒子?

如您所见,我们提取出与背景不常见的红色色调部分。阈值也需要进行调整,但对于这个特定的例子来说,这没什么大不了的。在