import datetime
import cv2
import numpy
clicked = False
path = "files/file1.png"
coordinates = {'x':[],'y':[]}
def onMouse(event, x, y, flags, param):
global image
global clicked
if event == cv2.EVENT_LBUTTONUP:
coordinates['x'].append(x)
coordinates['y'].append(y)
clicked = True
if (len(coordinates['x'])> 1 ):
print("debug drawing line")
cv2.line(image, (coordinates['x'][-2],coordinates['y'][-2]), (coordinates['x'][-1],coordinates['y'][-1]),(255,0,0),1)
print('debug drawing point')
cv2.circle(image,(coordinates['x'][-1],coordinates['y'][-1]), 3,(255,0,255),3)
def saveImage():
xmin, xmax = min(coordinates['x']),max(coordinates['x'])
ymin, ymax = min(coordinates['y']),max(coordinates['y'])
nombre = datetime.datetime.strftime(datetime.datetime.now(),'%Y-%m-%d-%H-%M-%S')
cv2.imwrite(f'files/Result-{nombre}.png',image[ymin:ymax,xmin:xmax])
image = cv2.imread(path)
cv2.namedWindow("Display", cv2.WINDOW_AUTOSIZE)
cv2.setMouseCallback('Display', onMouse)
active = True
while active:
cv2.imshow('Display', image)
key = cv2.waitKey(1)
if key == ord('q'):
cv2.destroyAllWindows()
active = False
if key == ord('s'):
saveImage()
cv2.destroyAllWindows()
active = False
Программа открывает изображение с помощью cv2. Основной цикл состоит из ожидания ввода пользовательской клавиши: Q для выхода из программы или S для сохранения изображения. Когда пользователь нажимает на точку на изображении, мы рисуем точку на изображении, а после первой точки рисуем линии между точками.
Я пытаюсь добавить кодовый блок для сброса изображения вот так
Я работаю над небольшой программой, которая открывает изображение и позволяет пользователю щелкать точки, чтобы рисовать линии. [code]import datetime import cv2 import numpy
clicked = False
path = "files/file1.png" coordinates = {'x':[],'y':[]} def onMouse(event, x, y, flags, param): global image global clicked if event == cv2.EVENT_LBUTTONUP: coordinates['x'].append(x) coordinates['y'].append(y) clicked = True if (len(coordinates['x'])> 1 ): print("debug drawing line") cv2.line(image, (coordinates['x'][-2],coordinates['y'][-2]), (coordinates['x'][-1],coordinates['y'][-1]),(255,0,0),1)
active = True while active: cv2.imshow('Display', image) key = cv2.waitKey(1) if key == ord('q'): cv2.destroyAllWindows() active = False if key == ord('s'): saveImage() cv2.destroyAllWindows() active = False [/code] Программа открывает изображение с помощью cv2. Основной цикл состоит из ожидания ввода пользовательской клавиши: Q для выхода из программы или S для сохранения изображения. Когда пользователь нажимает на точку на изображении, мы рисуем точку на изображении, а после первой точки рисуем линии между точками. Я пытаюсь добавить кодовый блок для сброса изображения вот так [code]if key == ord('r'): resetImage() [/code] [code]def resetImage(): print('Debug: reset Image') coordinates['x'].clear() coordinates['y'].clear() # image = cv2.imread(path) # cv2.destroyAllWindows() [/code] Это дает результат, но очевидно, что это не то, что я ищу.
Я работаю над небольшой программой, которая открывает изображение и позволяет пользователю щелкать точки, чтобы рисовать линии.
import datetime
import cv2
import numpy
Я работаю над небольшой программой, которая открывает изображение и позволяет пользователю щелкать точки, чтобы рисовать линии.
import datetime
import cv2
import numpy
Я работаю над небольшой программой, которая открывает изображение и позволяет пользователю щелкать точки, чтобы рисовать линии.
import datetime
import cv2
import numpy
Я работаю над небольшой программой, которая открывает изображение и позволяет пользователю щелкать точки, чтобы рисовать линии.
import datetime
import cv2
import numpy