поиск цвета по клику 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)
Программа должна все пиксели, которые удовлетворяют условию делать зеленым, но получается как будто я неверно рисую или запоминаю пиксели(будто он в половине находит и отражает на другую половину), вот пример:
В чем может быть ошибка? Логика вроде бы верная...
