Мне нужно нарисовать линию на изображении, чтобы я нажимал на pt1 и перетаскивал до pt2. Поэтому в результате отобразится строка, и я также получу координаты pt1 и pt2. Я в настоящее время с помощью двух отдельных щелчков мыши, чтобы нарисовать линию со следующим кодомПеретащите мышь, чтобы нарисовать линию и получить кордины конечных точек линии в opencv Python
import numpy as np
import cv2
def get_points(im):
# Set up data to send to mouse handler
data = {}
data['im'] = im.copy()
data['points'] = []
# Set the callback function for any mouse event
cv2.imshow("Image", im)
cv2.setMouseCallback("Image", mouse_handler, data)
cv2.waitKey(0)
# Convert array to np.array
points = np.vstack(data['points']).astype(float)
return points
def mouse_handler(event, x, y, flags, data):
if event == cv2.EVENT_LBUTTONDOWN:
cv2.circle(data['im'], (x, y), 3, (0, 0, 255), 5, 16);
cv2.imshow("Image", data['im']);
if len(data['points']) < 2: # This can be changed for more or less points
data['points'].append([x, y])
# Running the code
img = cv2.imread('image.jpg', 0)
pts = get_points(img)
cv2.line(img, (pts[0][0], pts[0][1]), (pts[1][0], pts[1][1]), (0,0,0), 2)
cv2.imshow('Image', img)
cv2.waitKey(0)
Это работает, но не решить мою проблему. Я хочу, чтобы он перетащил с pt1 на pt2 и нарисовал линию сам, вместо того, чтобы получить точки с помощью кликов, а затем нарисовать линию. Так, например, ниже изображение на левой стороне моей текущей реализации, но я хочу, чтобы это сделать, как это сделано в правом изображении
Спасибо за ваше предложение заранее.