gpt4 book ai didi

python - 查找图像中红色像素的坐标

转载 作者:行者123 更新时间:2023-12-02 16:13:55 26 4
gpt4 key购买 nike

Input picture

上面的图片是我正在输入的示例输入,我想找到该图像中所有红色像素的坐标,并将其存储在列表中,然后在以后迭代此列表,并在我们所围绕的每个坐标周围绘制圆圈使用OpenCV的cv2.circle函数在图像中找到。我正在执行以下操作:

coord = []

for i in range(img.shape[0]):
for j in range(img.shape[1]):
if img[i,j,0]!=0 and img[i,j,1]!=0 and img[i,j,2]!=255:
img[i,j,0]=0
img[i,j,1]=0
img[i,j,2]=0
else:
img[i,j,0]=0
img[i,j,1]=0
img[i,j,2]=255
coord.append([i,j])

for l in range(len(coord)):
px=coord[l][0]
py=coord[l][1]
cv2.circle(img,(px,py),5,(0,255,255),1)

但是,执行上述操作并不是在所有坐标上都画一个圆。我猜想坐标的存储和访问有问题。谁能指出错误并请帮助我。

I am getting the following output which isn't correct

最佳答案

这里的主要问题是当回写那些圆圈时,您的pxpy会转置。您必须执行(py, px)

但是,此外,要使找到红色像素的速度更快(在我的机器上快135倍!),请结合使用

  • cv2.inRange(生成二进制蒙版图像,匹配的像素为1,不匹配的像素为0)
  • np.argwhere(返回值非零的矩阵的索引)
  • import cv2
    import numpy as np

    img = cv2.imread("RvegM.png")
    red_pixels = np.argwhere(cv2.inRange(img, (0, 0, 250), (0, 0, 255)))
    for px, py in red_pixels:
    cv2.circle(img, (py, px), 5, (0, 255, 255), 1)
    cv2.imwrite("out.png", img)

    out.png最终看起来像这样:

    enter image description here

    关于python - 查找图像中红色像素的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61481540/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com