在OpenCV Python中,可以使用鼠标事件来拖动绘制直线并获取直线端点的坐标。下面是一个示例代码:
import cv2
# 定义全局变量
drawing = False
line_start = (-1, -1)
line_end = (-1, -1)
# 鼠标事件回调函数
def draw_line(event, x, y, flags, param):
global drawing, line_start, line_end
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
line_start = (x, y)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
line_end = (x, y)
cv2.line(img, line_start, line_end, (0, 255, 0), 2)
cv2.imshow("image", img)
# 创建一个黑色图像窗口
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow("image")
cv2.setMouseCallback("image", draw_line)
while True:
cv2.imshow("image", img)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
# 输出直线端点的坐标
print("直线起点坐标:", line_start)
print("直线终点坐标:", line_end)
这段代码创建了一个黑色图像窗口,并通过鼠标事件回调函数draw_line
实现了拖动绘制直线的功能。当鼠标按下时,记录起点坐标;当鼠标释放时,记录终点坐标,并在图像上绘制直线。最后,通过cv2.imshow
显示图像窗口,并通过cv2.waitKey
等待用户按下键盘上的'q'键退出程序。
在这个例子中,我们使用了OpenCV的cv2.line
函数来绘制直线,该函数接受起点坐标、终点坐标、颜色和线宽等参数。你可以根据实际需求调整这些参数。
关于OpenCV Python的更多信息,你可以参考腾讯云的相关产品OpenCV介绍页面:OpenCV产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云