我正在尝试在两个坐标之间画一条直线,这些坐标可以通过单击图像或鼠标事件获取。我能够在单击鼠标时绘制单个圆,但无法弄清如何在这些点之间绘制线条。当我使用这段代码时,我只能打印起始和结束坐标,而不能在它们之间绘制线条。
import numpy as np
import cv2
import cv2.cv as cv
boxes = []
def on_mouse(event, x, y, flags, params):
if event == cv.CV_EVENT_LBUTTONDOWN:
print 'Start Mouse Position: '+str(x)+', '+str(y)
sbox = [x, y]
boxes.append(sbox)
elif event == cv.CV_EVENT_LBUTTONUP:
print 'End Mouse Position: '+str(x)+', '+str(y)
ebox = [x, y]
boxes.append(ebox)
count = 0
while(1):
count += 1
img = cv2.imread('img.jpg',0)
img = cv2.blur(img, (3,3))
cv2.namedWindow('real image')
cv.SetMouseCallback('real image', on_mouse, 0)
cv2.imshow('real image', img)
if count < 50:
if cv2.waitKey(33) == 27:
cv2.destroyAllWindows()
break
elif count >= 50:
if cv2.waitKey(0) == 27:
cv2.destroyAllWindows()
break
count = 0
不知何故,我无法在循环之外提取坐标。 有人能否建议如何在图像上单击的点之间绘制直线或矩形?