在python opencv中获取强度为255的二进制图像的像素位置

Sr_*_*_33 1 python opencv image-processing python-3.x opencv3.0

我想获取图像中蓝点的像素坐标。为了得到它,我首先将其转换为灰度并使用阈值函数。

    import numpy as np
    import cv2

    img = cv2.imread("dot.jpg")
    img_g = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret1,th1 = cv2.threshold(img_g,127,255,cv2.THRESH_BINARY_INV)
Run Code Online (Sandbox Code Playgroud)

如果我想获得强度为 255 的像素位置,下一步该怎么做?请告诉是否有一些更简单的方法可以做到这一点。

小智 5

我不认为这会像你期望的那样工作。通常,为了在具有特定颜色的形状上获得稳定的跟踪,您可以在 RGB/HSV/HSL 平面中执行此操作,您可以从在照明方面更稳健的HSV开始。

1-转换为 HSV 使用 cv2.cvtColor()

2-cv2.inRagne(blue_lower, blue_upper)用于“过滤”所有不需要的颜色。

现在您有一个漂亮的二值图像,其中只有蓝色(假设您有静态背景或应添加更多过滤器)。

3-现在如果你想检测点(通常超过一个像素),你可以尝试cv2.findContours

4-您可以像这样使用多种方法(取决于您要检测的形状)获得轮廓的 x,y 像素 cv2.boundingRect()