首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

拖动鼠标在opencv Python中绘制直线并获取直线端点的坐标

在OpenCV Python中,可以使用鼠标事件来拖动绘制直线并获取直线端点的坐标。下面是一个示例代码:

代码语言:txt
复制
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产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CAD常用基本操作

,同一图形可在选中夹点连续进行多次不同比例缩放) 16 三维绘图中旋转:按住Shift并按住鼠标中键拖动 17 . dxf文件:表示储存之后可以在其它三维软件打开文件 18 . dwt文件:图形样板文件...))有缘学习更多+谓ygd3076考证资料或关注桃报:奉献教育(店铺) 21 绘图中平行四边形法则(利用绘制四边形绘制某些图形) A两条直线卡一条直线绘制一个边直线后,通过平移获取另一边直线 B 绘制相应长度弦...23 系统变量 Taskbar作用:0表示工具栏上只显示一个CAD窗口,1表示平铺显示所有CAD窗口 基本操作和常用命令 1 直线命令:line(L) A绝对坐标法:直接输入点坐标 B相对坐标法...C 对象(O):将二维或三维二次或三次样条拟合多段线转换成等价样条曲线删除多段线(样条曲线拟合多段线命令Pedit(PE)) 23 多段线编辑命令:pedit(PE) A 如果选定对象是直线或圆弧...“全部”选项也按照指定总角度设置选定圆弧包含角。 D 动态(DY):打开动态拖动模式。通过拖动选定对象端点之一来改变其长度。其他端点保持不变 43 特性匹配 matchprop(MA)

5.4K50

带你实现一个简单多边形编辑器

,所以需要监听点击事件,然后用线把点击点都连接起来,鼠标点击事件对象clientX好clientY是相对于浏览器窗口,所以需要减去画布和浏览器窗口偏移量来得到相对于画布坐标: toCanvasPos...拖动顶点 多边形闭合后,允许拖动各个顶点来修改位置,为了直观,像高德示例一样给每个顶点都绘制一个圆形: render() { // ... // 绘制顶点圆形 if (this.isClosePath...高德示例并没有拖动整体功能,但是不影响我们支持,整体拖动逻辑和拖动单个顶点差不多,先判断鼠标按下时是否多边形内,然后移动过程更新所有顶点位置,和拖动单个区别是记录和应用是移动偏移量...坐标是否在线段两个端点之间 let min = Math.min(x1, x2) let max = Math.max(x1, x2) // 如果在线段内就是我们要点...首先在非拖动情况下插入虚拟顶点渲染,然后拖动前再把它去掉,因为加入了虚拟顶点,所以计算dragPointIndex时需要转换成没有虚拟顶点真实索引,当检测到拖动是虚拟节点时把它转换成真实顶点就可以了

1.1K40

基于opencvselenium滑动验证码实现

我们首先要对这个东西操作过程有一个大概了解。 打开验证码页面。 鼠标放到拖动按钮上 对拖动按钮进行拖动 拖动到阴影快重合位置。 放开拖动按钮。...其他方法这里不过多介绍,想了解更多请转seleniun ActionChains 鼠标键盘操作 接下来到我本次要介绍重点,滑动距离介绍,也就是图片求阴影区域位置。...这里我使用了opencv库,主要流程包括 对图像二值化 对二值化图像进行高斯模糊 用canny进行边缘检测 然后HoughLinesP霍夫变换寻找直线 对符合条件直线进行处理寻找交点,进而求出我们要找阴影快距离..., y2 in lines: if (abs(y2 - y1) < 5 or abs(x2 - x1) < 5) and min(x1, x2) 60: # 只要垂直于坐标直线并且起始位置60...内我们认为点在直线上 # 判断交点在行直线是左端点还是右端点 if abs(y2 - y1) < 5: # x1是行直线 if abs(x1 - x) + abs(y1 - y) < 5: # 左端点

1.1K30

计算机视觉:2.6~4.5 颜色空间、数据结构与绘图

什么是Mat Mat 是 OpenCV C++ 语言中用来表示图像数据一种数据结构, Python 中转化为 numpy ndarray Mat 由 header 和 data 组成,header...OpenCVMatPython已经转化为ndarray,通过ndarray属性可访问Mat图像属性: import cv2 import numpy as np img = cv2.imread...利用OpenCV一共绘制图形API可以轻松图像上绘制各种图形,例如:直线、矩形、圆、椭圆等。..., color[, thickness[, lineType[, shift]]]):绘制文本; text:文本内容; org:文本图片中左下角坐标; fontFace:字体; fontScale...实现Python程序,程序具有以下功能: 按下键盘L键,拖动鼠标可以绘制直线; 按下键盘R键,拖动鼠标可以绘制矩形; 按下键盘C键,拖动鼠标可以绘制圆形,拖动长度为半径; import cv2 import

88910

Python键鼠操作自动化库PyAutoGUI简介

PyAutoGUI是一个Python语言键鼠自动化库,简单来说和按键精灵功能一样。但是因为是Python类库,所以可以使用Python代码配合一些其他类库完成更加强大功能。...drag(x,y)、dragTo(x,y) 拖动鼠标 mouseDown、mouseUp 按下按键,松开按键 scroll 向下滚动鼠标滚轮函数 键盘操作函数 操作键盘按键函数。...,也可以从屏幕寻找匹配图片,返回其坐标。...运行这个例子需要先打开一个画图窗口,放到全屏,然后运行Python代码,迅速将画图程序切换到前台。这样就可以看到PyAutoGUI控制鼠标绘制精确直线了。...这个例子需要先安装OpenCV库和opencv-python包,安装完毕之后就可以运行了。

2K20

结构建模设计——Solidworks软件之草图绘制基础图形工具总结(绘制直线、矩形、圆、槽、圆弧、圆角等)

1 草图绘制实战 1.1 绘制直线 ——鼠标左键点击草图中直线工具 ——绘图区域点击左键先放起始点 ——再选择合适地方单击左键放置结束点 ——按键盘ESC取消绘制 ——此时选中直线可以拖动 ——选中直线...,设计树区域弹出草图属性,可以添加几何关系 ——选中垂直则直线垂直放置(此时可以看到垂直标志,直线颜色也会由蓝色转为黑色) ——此时不能再点击水平了(二者属性本身就是对立,若选上了,可以设计树删除...) ——点击固定,可以固定直线无法拖动 ——端点还是蓝色,说明也可以动,点击端点,选择固定属性,也就固定约束了。...——草图绘制区域,左键点击确定第一个端点,此时移动鼠标,点击确定第二个端点,矩形就画出来了 ——添加尺寸,草图选项卡中选择智能尺寸按钮,或者按住鼠标右键,向上滑动即可选择该智能尺寸标注功能 ——添加矩形长和高...1.6 绘制圆角及倒角 ——草图绘制工具,选择圆角,点击刚刚绘制矩形一个端点鼠标移至端点时可以看到黄色预览 ——点击端点左侧属性可以设置圆角参数,点击确定生效 ——同样,可以选择绘制倒角,参数通用可以设置

2.4K20

CAD2007操作教程上

3.直接在命令输入快捷键L(命令行内输入命令快捷键,回车或空格或鼠标右键确定) 直线输入方法1.从命令行内输入直线命令快捷建L确定,2.用鼠标左键屏幕中点击直线端点,拖动鼠标,确定直线方向...二、矩形命令(REC) 绘制矩形步骤 方法:命令行内输入命令快捷键为Rec,确定,用鼠标操作窗口中指定第一角点,拖动鼠标,命令行内输入@X,Y  确定 X为矩形水平方向上距离 Y指矩形垂直方向上距离...L直线:可画出直线来 4.拖动鼠标给以线段方向,直接拖出线段长度确定 多段线与线区别 1. 直线有三个交点,多段线有两个交点 2. 多段线有粗细,直线无粗细 3....三、测量工具(DI) 如果想知道物体长度,命令栏输入快捷键DI,确定(回车键,空格键,或右键)用鼠标依次去点击需要测量线端点即可。 课后练习:掌握本节所学内容,完成下图绘制。...使用AR(阵列)命令,环形阵列中间直线,中心点为直线最上方端点,填充角度为35°,数量为16 4、修剪线段,使用MI(镜像)命令,镜像线段,就画出了花瓣了,结果如下图   AUTOCAD

3.6K30

2014版CAD操作教程(全)

3.直接在命令输入快捷键L(命令行内输入命令快捷键,回车或空格或鼠标右键确定) 直线输入方法1.从命令行内输入直线命令快捷建L确定,2.用鼠标左键屏幕中点击直线端点,拖动鼠标,确定直线方向...二、矩形命令(REC) 绘制矩形步骤 方法:命令行内输入命令快捷键为Rec,确定,用鼠标操作窗口中指定第一角点,拖动鼠标,命令行内输入@X,Y  确定 X为矩形水平方向上距离 Y指矩形垂直方向上距离...L直线:可画出直线来 4.拖动鼠标给以线段方向,直接拖出线段长度确定 多段线与线区别 1. 直线有三个交点,多段线有两个交点 2. 多段线有粗细,直线无粗细 3....三、测量工具(DI) 如果想知道物体长度,命令栏输入快捷键DI,确定(回车键,空格键,或右键)用鼠标依次去点击需要测量线端点即可。 课后练习:掌握本节所学内容,完成下图绘制。...移动光标时,其形状也将随之改变,以指示视图旋转方向。 2、单击 三维连续观察按纽,是鼠标拖动方向就是旋转方向,鼠标拖动快与慢就是模型旋转速度快与慢。

6.2K10

CAD 初级教程

3.直接在命令输入快捷键L(命令行内输入命令快捷键,回车或空格或鼠标右键确定) 直线输入方法1.从命令行内输入直线命令快捷建L确定,2.用鼠标左键屏幕中点击直线端点,拖动鼠标,确定直线方向...二、矩形命令(REC) 绘制矩形步骤 方法:命令行内输入命令快捷键为Rec,确定,用鼠标操作窗口中指定第一角点,拖动鼠标,命令行内输入@X,Y  确定有缘学习更多+谓ygd3076考证资料或关注桃报...L直线:可画出直线来 4.拖动鼠标给以线段方向,直接拖出线段长度确定 多段线与线区别 1. 直线有三个交点,多段线有两个交点 2. 多段线有粗细,直线无粗细 3....三、测量工具(DI) 如果想知道物体长度,命令栏输入快捷键DI,确定(回车键,空格键,或右键)用鼠标依次去点击需要测量线端点即可。 课后练习:掌握本节所学内容,完成下图绘制。...2、单击 三维连续观察按纽,是鼠标拖动方向就是旋转方向,鼠标拖动快与慢就是模型旋转速度快与慢。

5.7K00

手写原生代码专题 | 简易手写画板(二)

1.1 创建画布 Html 文档创建一个画布,然后使用document.getElementById('canvas') 方法获取画布...1.2 画直线 画一条直线,首先调用 beginPath() 绘制路径起始点,使用 moveTo() 移动画笔,然后再使用 lineTo() 连接子路径终点到x,y坐标,最后调用 ctx.stroke...x,y值,先以线条宽度绘制圆形,然后以鼠标按下时 x,y 值为直线起点,鼠标移动时获取鼠标的 x,y 值为终点绘制直线。...绘制完成后更改x,y值为当前鼠标的位置(不断更新直线起点),这样就可以一直拖动鼠标绘制直线。...,想必大家都熟悉了如何手写一个简易画布,基于这个基础我们可以增加更多功能,比如三角图形、椭圆等形状绘制,并能拖动形状,大家可以抽空完善下。

1.4K20

二寸照片识别切边矫正

for循环绘制直线时,我们顺便根据霍夫直线检测返回lines直线两个端点(x_1,y_1)以及(x_2,y_2)计算直线斜率以及到整幅图像中心点center(右图红圈)距离。...四:寻找与定位上下左右四条直线 ? 左图四条红色线即为我们找到上下左右边框线,如何实现呢? 我们首先遍历所有直线,然后根据直线两个端点坐标判断直线属于顶部直线还是底部还是左侧还是右侧。...如果直线端点x坐标均小于图像中心点x坐标,则说明直线为左侧竖直边框;如果直线端点y坐标均大于图像中心点y坐标,则说明直线为底部水平方向边框线。其余两侧同理。...lines[i]; r = length[i]; r_ = i; } continue; } } 检测识别完毕后进行打印显示: //打印直线两个端点绘制四条边框直线...四:计算四个顶点透视变换 ? 我们现在已知四条直线,就可以计算出四条直线四个交点了(图蓝色四个点)。

1.4K20

python ImageDraw类实现几何图形绘制与文字绘制

python PIL图像处理模块ImageDraw类支持各种几何图形绘制和文本绘制,如直线、椭圆、弧、弦、多边形以及文字等。...draw; draw.line():直线绘制,第一个参数指定直线端点坐标,形式为(x0, y0, x1, y1),第二个参数指定直线颜色; draw.rectangle():矩形绘制,第一个参数指定矩形对角线顶点...绘制结果如下: ? 最后,补充一下python中所支持颜色,如下图所示: ?...PS:opencv+python 实现基本图形绘制及文本添加 import cv2 import numpy as np import os class Drawing(object): """ 使用...ImageDraw类实现几何图形绘制与文字绘制详细内容,更多关于python 几何图形绘制资料请关注ZaLou.Cn其它相关文章!

2.7K30

【计算机视觉】【图像处理综合应用】路沿检测

图4 但是canny检测出来边缘噪声比较多,我们再使用高斯滤波器模糊一下图像,python中使用5×5高斯滤波器模糊图像。...一条直线图像二维空间可由两个变量表示,笛卡尔坐标系中直线可由参数斜率k和截距b表示y=kx+b,坐标可由参数极径r和极角θ表示。...Hough变换基本思想是将图像像素点映射到参数空间中,通过参数空间中寻找峰值来检测几何形状。对于直线检测,参数空间通常是极坐标空间,其中每个像素点在参数空间中对应一条直线。...标准霍夫线变换 提供一组参数对 (θ, rθ) 集合来表示检测到直线OpenCV 通过函数 HoughLines来实现。...它输出检测到直线端点 (x0, y0, x1, y1)。OpenCV 它通过函数 HoughLinesP来实现。

32710

冷知识 | OpenCV绘制带箭头方向线段

点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 引子 我根据一个矩形进行了各种角度旋转,就想通过绘制一个带方向线段表示它,通过旋转矩阵很容易获取了两个点坐标...,但是很快遇到了一个新问题,怎么绘制那个箭头,就是带箭头线段,OpenCVcv.line函数只支持绘制不带箭头线段,于是我决定重复造轮子 手动版实现带箭头线段绘制 因为我知道opencv有个函数是...line无法支持绘制带箭头直线,于是网上一通猛搜,发现一个哥们博客写OpenCV3如何绘制带箭头线段,C++代码!...还有另外一个函数可以直接绘制带箭头线段,就是说我重复造轮子!...OpenCV函数是: void cv::arrowedLine(         InputOutputArray img, # 输入图像     Point pt1, # 线段端点     Point

95130

OpenCV 系列教程1 | OpenCV GUI 特性

默认为 1 lineType:线类型 绘制各种形状 # 需要给定直线起始和结束坐标 # 创建一个黑色画布 img = np.zeros((512, 512, 3), np.uint8) #...绘制坐标 (0, 0) -> (510, 128) 直线 蓝色,厚度为 5px img = cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5) # OpenCV...作业:绘制 OpenCV 图标 ? 鼠标作为画笔 学习目标: 处理鼠标事件 cv2.setMouseCallback() 简单 Demo 首先,创建一个鼠标回调函数,该函数鼠标事件发生时执行。...高级 Demo 现在我们要做更多更好应用。在这里,通过拖动鼠标绘制矩形或圆形(这取决于我们选择模式),就像在 Paint 应用程序中所做那样。...我们应用程序,我们已经创建了一个开关,在这个开关中应用程序只开关打开时才工作,否则屏幕总是黑色

3.5K21

Canvas两点连线及多点连线

moveTo(int x, int y) 移动画笔到指定坐标点(x,y),该点就是新子路径起始点 lineTo(int x, int y) 使用直线连接当前端点和指定坐标点(x,y) stroke...Canvas图形绘制过程,几乎都是先按照一定顺序先定下几个坐标点,也就是所谓绘制路径,然后再根据我们需要将这些坐标点用指定方式连接起来,就形成了我们所需要图形。...使用canvas绘制带颜色直线 大家都知道,现实世界,画笔也是多种多样,并且具有各种不同颜色。...使用canvas绘制基本折线 当我们掌握了Canvas绘制直线之后,绘制折线等其他形式线条就简单多了。我们只需要多绘制几个路径中间点,依次将它们连接起来即可。...强烈注意:绘制图形路径时,一定要先调用beginPath()。beginPath()方法将会清空内存之前绘制路径信息。

9.1K20

大学课程 | 计算机图形学,基于MFC和二维变换画图软件

,根据鼠标位置坐标获取起始点pStart和终止点pEnd坐标,设计实现每个基本图形画图方法,根据pStart和pEnd即可确定基本图形控制点,进而绘制对应图形。...其中,鼠标左键按下移动时,使用橡皮筋技术,即移动过程中选用画笔颜色取反模式(SetROP2(R2_NOT)),即可消除移动过程不断绘制图形,鼠标左键抬起时,设置画笔为颜色覆盖模式(SETROP2...2.2.2 直线直线以下图形绘制均为根据外接矩形绘制内部图形。绘制图形时,当点击鼠标左键时获取矩形起点,按住不放拖动鼠标直至放开左键,放开鼠标左键位置记录为矩形终点。...矩形和填充矩形 使用鼠标拉取矩形获取了起始点和终止点后用矩形函数实现。...2.2.5 圆形和填充圆 使用鼠标拉取矩形获取了起始点后。将两点间距离作为要画圆半径r。

2.3K40

opencv(4.5.3)-python(十八)--轮廓线入门

因此,寻找轮廓线之前,应用阈值或Canny边缘检测。 • 从OpenCV 3.2开始,findContours()不再修改源图像了。 • OpenCV,寻找轮廓线就像从黑色背景寻找白色物体。...轮廓线是一个包含图像中所有轮廓线Python列表。每个单独轮廓线是一个Numpy数组,包含物体边界点(x,y)坐标。 注意:我们将在后面详细讨论第二个和第三个参数以及层次结构。...它第一个参数是源图像,第二个参数是轮廓线,应该以Python列表形式传递,第三个参数是轮廓线索引(绘制单个轮廓线时很有用。 要绘制所有轮廓线,传递-1),其余参数是颜色、厚度等。...你需要这条线上所有点来表示这条直线吗?不,我们只需要那条线两个端点。这就是cv.CHAIN_APPROX_SIMPLE作用。它删除了所有多余压缩了轮廓,从而节省了内存。...下面是一个矩形图片,演示了这个技术。只要在轮廓线数组所有坐标上画一个圆(用蓝色画)。

62320

【从零学习OpenCV 4】鼠标响应

有时我们需要在图像中标记出重要区域,这时通过鼠标可以很好完成这项任务,因此OpenCV 4也提供了鼠标响应相关函数setMouseCallback(),该函数函数原型代码清单3-56给出。...x:鼠标指针图像坐标x坐标 y:鼠标指针图像坐标y坐标 flags:鼠标响应标志,参数为EVENT_FLAG_*形式,具体可选参数及含义表3-10给出。...函数第一个参数是鼠标响应事件标志,参数为EVENT_*形式,具体可选参数及含义表3-9给出。第二个和第三个参数分别是鼠标当前位置图像坐标x坐标和y坐标。...为了了解鼠标响应使用方法,代码清单3-58给出了绘制鼠标移动轨迹示例程序。...Mat img,imgPoint; //全局图像 8. Point prePoint; //前一时刻鼠标坐标,用于绘制直线 9.

1.1K40

服装打版界扛把子------ET自定义操作

,然后选择端移动,并用鼠标左键选择线段,然后右键结束选择,如图: 此时就会变成一条绿色线段,我们可以按住某一个端点并进行拖动,想拖多长线段就拖多长线段,如图: 最后线段就是红色那条,而且绿色那条线段会消失...2.平行线 顾名思义,就是能够生成多条平行线段,我们可以先绘制一条线段,然后点击平行线,右击鼠标然后左键拖动线段即可,如图: 3.等分线 我们可以使用等分线绘制一个雪花图案,如图: 我们首先绘制一条线段...,然后选中等分线图标并且输入省量,然后使用左键拖动即可,如图: 4.测量两点长度 这里我们需要使用两点测量这一功能,首先准备好两条线段,然后再点击两点测量,如图: 接着我们分别点击两条线段端点...5.旋转形状 有些时候我们需要将我们绘制图形方位进行旋转,这时我们可以借助旋转工具,如图: 选择旋转后,我们来框选需要旋转部分,如图: 选中后右击鼠标,然后选择一个旋转中心点,再用鼠标拖动旋转...7.省操作 1).单向省 可以曲线上添加一条直线,选择图标工具菜单,然后找到单向省,如图: 然后曲线上单击某一点,即可添加一条直线,如图: 2).枣弧省 就是可以绘制一个菱形,打开图标工具菜单

1.1K00
领券