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

Get pixel location of binary image with intensity 255 in python opencv

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

    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)

如果我想获取强度为255的像素位置,下一步怎么办?请告诉是否有一些更简单的方法来做同样的事情。

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

1-使用 cv2.cvtColor()

转换为 HSV

2-使用 cv2.inRagne(blue_lower, blue_upper) 来 "filter" 所有不需要的颜色。

现在你有一个漂亮的二值图像,里面只有蓝色(假设你有一个静态背景或应该添加更多滤镜)。

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

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