поиск цвета по клику opencv python

Пишу программу для поиска похожих цветов пикселей с тем, на который кликнул курсором. Использую Евклидову метрику, порог ставлю от 10 до 50.

import cv2
import tkinter as tk
import mouse
import numpy as np
import math

img = cv2.imread("C:\\11.jpg")
cv2.namedWindow("Image")
cv2.imshow("Image", img)
mX, mY = 0, 0
qwe = [[], []]

def getCoords(event, x, y, flags, param):
    global mX, mY
    global qwe #тут лежат координаты пикселей которые прошли условие
    q = 0
    flagM = 0
    if event == cv2.EVENT_LBUTTONDOWN:
        mX, mY = x, y
        print(img[mX, mY])
        
        for i in range(900):
            for j in range(900):
                #img[mX, mY] - куда кликнули мышкой, img[i, j] - текущий пиксель изображения
                if math.sqrt((int(img[mX, mY][0]) - int(img[i, j][0])) * 
                (int(img[mX, mY][0]) - int(img[i, j][0])) + (int(img[mX, mY][1]) - 
                int(img[i, j][1])) * (int(img[mX, mY][1]) - int(img[i, j][1])) + 
                (int(img[mX, mY][2]) - int(img[i, j][2])) * (int(img[mX, mY][2]) - 
                int(img[i, j][2]))) < 10:
                    qwe.append([i, j])
                    flagM = 1
if flagM == 1:
    for i in qwe:
        for j in i:
            img[i, j] = [0, 255, 0]
    cv2.namedWindow("Image1")
    cv2.imshow("Image1", img)


cv2.setMouseCallback('Image', getCoords)


cv2.waitKey(0)

Вот формула:введите сюда описание изображения

Программа должна все пиксели, которые удовлетворяют условию делать зеленым, но получается как будто я неверно рисую или запоминаю пиксели(будто он в половине находит и отражает на другую половину), вот пример:введите сюда описание изображения

В чем может быть ошибка? Логика вроде бы верная...


Ответы (0 шт):