Я новичок в Python ... У меня проблема с назначением значений. Я пытаюсь нарисовать периметр прямоугольника с помощью мыши, работающей в качестве индикатора. Код ниже, как я пытаюсь достичь этого.
import numpy as np
import cv2
from matplotlib import pyplot as plt
start = None
current = None
save = False
def drawRectangle():
def getPoint(event, x, y, flags, param):
global start
global current
global save
if event == cv2.EVENT_LBUTTONDOWN:
start = (x, y)
save = False
elif event == cv2.EVENT_MOUSEMOVE:
current = (x, y)
elif event == cv2.EVENT_LBUTTONUP:
save = True
start = None
current = None
img = np.zeros((512, 512, 3), np.uint8)
black_img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', getPoint, img)
while (1):
global save
if start is not None:
img = black_img
cv2.rectangle(img, start, current, (0, 255, 0), 1)
if save is True:
black_img = img
save = False
cv2.imshow('cpy', black_img)
cv2.imshow('image', img)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
drawRectangle()
Проблема в том, что black_img присваивается то же значение, что и img в строке img = black_img, и я, честно говоря, понятия не имею, почему. Чтобы показать проблему, я также включил окно с black_img, которое совпадает с окном с img https://zapodaj.net/images/12be96b535246.png - как это выглядит
Мне удалось как-то решить эту проблему, создав новый черныйизображение с img = np.zeros((512, 512, 3), np.uint8)
внутри if start is not None:
вместо назначения black_img, но это делает невозможным рисование нескольких прямоугольников. https://zapodaj.net/images/088c86020ebc1.png - как это выглядит
Я застрял на этой проблеме некоторое время ... Пожалуйста, помогите.