0
이미지에 선을 그어 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로 아래로 드래그하여 클릭 수를 사용하여 점을 얻은 다음 선을 그리는 대신 선을 그립니다. 예를 들어, 아래 왼쪽 내 현재의 구현에 이미지하지만 난 그것을 수행 할 수 있도록 사전에 귀하의 제안에 대한 올바른 이미지
감사를 수행한다.