Отображение текущего координатного круга вместо всей точки с использованием opencv - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь нарисовать окружность с текущей координатой, когда мышь перемещается из одного места в другое на экране OpenCV

Прямо сейчас я могу видеть все окружности, где мышь была перемещена из одного места. к другому, как указано ниже в оснастке

enter image description here

Но мне нужно отображать только один круг ( текущая координата ) при использовании EVENT_MOUSEMOVE в событиях мыши, как упомянуто в снимке

enter image description here

упомянутый ниже мой код

import cv2
import numpy as np
import math

drawing = False

def draw_circle(event, x, y, flags, param):
    global x1, y1, drawing, radius, num, img, img2
    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        num += 1
        x1, y1 = x, y
        radius = int(math.sqrt((x - x1)**2 + (y - y1)**2))
        print(radius)
        cv2.circle(img, (x1,y1), radius, (255, 0, 0), 1)

    if event == cv2.EVENT_MOUSEMOVE:
        if drawing == True:
            radius = 5
            cv2.circle(img, (x, y), radius, (0, 0, 255), -1)

    if event == cv2.EVENT_LBUTTONUP:
        #drawing = False
        num += 1
        radius = int(math.sqrt((x - x1)**2 + (y - y1)**2))
        print(radius)
        cv2.circle(img, (x1,y1), radius, (255, 0, 255), 1)


if __name__ == "__main__":
    num = 0
    windowName = 'Drawing'

    img = np.zeros((500, 500, 3), np.uint8)
    cv2.namedWindow(windowName)
    cv2.setMouseCallback(windowName, draw_circle)
    while (True):
        cv2.imshow(windowName, img)
        if cv2.waitKey(20) == 27:
            break

    cv2.destroyAllWindows()

Предложения будут очень полезны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...