我试图在两个坐标之间画一条直线,这两个坐标可以通过单击图像或鼠标事件获得。我可以在单击鼠标时绘制单个圆圈,但无法弄清楚如何在这些点之间画线。当我使用这段代码时,我只能打印开始和结束坐标,不能在它们之间画一条线。
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
不知何故,我无法提取循环外的坐标。有人可以建议如何在我单击图像的点之间绘制线条或矩形吗?
原文由 Anuradha 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以参考下面我用来裁剪图像的 C++ 代码