开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7899|回复: 0
收起左侧

[技术专题] Opencv学习笔记 判断两条直线重合

[复制链接]
结帖率:87% (79/91)
发表于 2021-9-22 12:00:31 | 显示全部楼层 |阅读模式   浙江省杭州市
操作方法:
  1.鼠标点击两条直线的起点或终点并按住移动,由此可以修改直线。鼠标点击两条直线的中间点并按住移动,由此可以平移直线。
  2.键盘按住1234可选择对应的模式,画出不同角度下两条直线重合的情况。键盘按其它的键会退出程序。
QQ图片20210922115727.png
  
窗口程序集名保 留  保 留备 注
程序集1   
变量名类 型数组备 注
线1双精度向量4  
线2双精度向量4  

子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
图像_原始多维矩阵 
图像_原始的初始值标量 
图像多维矩阵 
按键整数型 
视觉_创建窗口 (“小白鼠”, #窗口_自动尺寸 )
图像_原始的初始值.赋值 (255, 255, 255, 0)
图像_原始.构造 (600, 800, #八位无符号整数_三通道, 图像_原始的初始值)
视觉_设置鼠标事件 (“小白鼠”, &鼠标事件, 0)
' 初始化两条线
线1.赋值 (100, 300, 300, 300)
线2.赋值 (500, 300, 700, 300)
循环判断首 ()
图像_原始.克隆 (图像.指针)  ' // 拷贝空白图片,方便重复画图
画图 (图像.指针, 线1, 线2)
视觉_显示图像 (“小白鼠”, 图像.指针)
按键 = 视觉_等待按键 (10)
判断 (按键 = 49)  ' 线1,线2与x轴左倾斜
线1.赋值 (100, 300, 300, 300)
线2.赋值 (500, 300, 700, 300)
判断 (按键 = 50)  ' 线1,线2与x轴垂直
线1.赋值 (400, 50, 400, 250)
线2.赋值 (400, 350, 400, 550)
判断 (按键 = 51)  ' 线1,线2与x轴右倾斜
线1.赋值 (100, 500, 300, 400)
线2.赋值 (500, 300, 700, 200)
如果真 (按键 = 52)  ' 线1,线2与x轴左倾斜
线1.赋值 (100, 200, 300, 300)
线2.赋值 (500, 400, 700, 500)

如果真 (按键 > 48 按键 < 53)
按键 = -1

循环判断尾 (按键 = -1)
调试输出 (按键)
视觉_销毁所有窗口 ()
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
鼠标事件  
参数名类 型参考可空数组备 注
event整数型
x整数型
y整数型
flags整数型
变量名类 型静态数组备 注
点1二维坐标数据结构d 
点2二维坐标数据结构d 
区域双精度向量6 
w双精度小数型 
h双精度小数型 
判断 (event = #事件_按下左键 )
点1.赋值 (x, y)
定义区域 (线1, 线2, 点1, 区域)
判断 (event = #事件_鼠标移动 )
点2.赋值 (x, y)
w = 点2.横坐标 - 点1.横坐标
h = 点2.纵坐标 - 点1.纵坐标
调整线 (线1, 线2, 区域, w, h)
如果真 (event = #事件_释放左键 )
点1.赋值 (0, 0)
点2.赋值 (0, 0)
区域.赋值 (-1, 0, 0, 0, 0, 0)

子程序名返回值类型公开备 注
定义区域 确定鼠标左键点击在两条直线的那个点上
参数名类 型参考可空数组备 注
l1双精度向量4
l2双精度向量4
p二维坐标数据结构d
区域双精度向量6
变量名类 型静态数组备 注
w双精度小数型 
h双精度小数型 
局x1双精度小数型 
局y1双精度小数型 
局x2双精度小数型 
局y2双精度小数型 
局x3双精度小数型 
局y3双精度小数型 
局x4双精度小数型 
局y4双精度小数型 
局r0矩形数据结构d 
局p1二维坐标数据结构d 
局r1矩形数据结构d 
局r2矩形数据结构d 
局r3矩形数据结构d 
局p2二维坐标数据结构d 
局r4矩形数据结构d 
局r5矩形数据结构d 
w = 20
h = 20
局x1 = l1.取元素1 ()
局y1 = l1.取元素2 ()
局x2 = l1.取元素3 ()
局y2 = l1.取元素4 ()
局x3 = l2.取元素1 ()
局y3 = l2.取元素2 ()
局x4 = l2.取元素3 ()
局y4 = l2.取元素4 ()
局r0.赋值 (局x1 - w, 局y1 - h, 2 × w, 2 × h)  ' l1的起点点
局p1.赋值 ( (局x2 + 局x1) ÷ 2, (局y1 + 局y2) ÷ 2)  ' l1的中间点
局r1.赋值 (局p1.横坐标 - w, 局p1.纵坐标 - h, 2 × w, 2 × h)
局r2.赋值 (局x2 - w, 局y2 - h, 2 × w, 2 × h)  ' l1的终点
局r3.赋值 (局x3 - w, 局y3 - h, 2 × w, 2 × h)  ' l2的起点
局p2.赋值 ( (局x3 + 局x4) ÷ 2, (局y3 + 局y4) ÷ 2)  ' l2的中间点
局r4.赋值 (局p2.横坐标 - w, 局p2.纵坐标 - h, 2 × w, 2 × h)
局r5.赋值 (局x4 - w, 局y4 - h, 2 × w, 2 × h)  ' l2的终点
判断 (局r0.包含 (p))  ' 判断点是否在矩形中
区域.赋值 (0, 局x1, 局y1, 0, 0, 0)
判断 (局r1.包含 (p))
区域.赋值 (1, 局x1, 局y1, 局x2, 局y2, 0)
判断 (局r2.包含 (p))
区域.赋值 (2, 局x2, 局y2, 0, 0, 0)
判断 (局r3.包含 (p))
区域.赋值 (3, 局x3, 局y3, 0, 0, 0)
判断 (局r4.包含 (p))
区域.赋值 (4, 局x3, 局y3, 局x4, 局y4, 0)
如果真 (局r5.包含 (p))
区域.赋值 (5, 局x4, 局y4, 0, 0, 0)


子程序名返回值类型公开备 注
画图  
参数名类 型参考可空数组备 注
图像指针整数型
局线1双精度向量4
局线2双精度向量4
变量名类 型静态数组备 注
延长线始二维坐标数据结构d 
延长线终二维坐标数据结构d 
颜色标量 
颜色.赋值 (0, 255, 0, 0)
视觉_线Zd (图像指针, 局线1.取元素1 (), 局线1.取元素2 (), 局线1.取元素3 (), 局线1.取元素4 (), 颜色, 1, 8, 0)
视觉_线Zd (图像指针, 局线2.取元素1 (), 局线2.取元素2 (), 局线2.取元素3 (), 局线2.取元素4 (), 颜色, 1, 8, 0)
判断 (视觉_线段是否重合 (局线1.取元素1 (), 局线1.取元素2 (), 局线1.取元素3 (), 局线1.取元素4 (), 局线2.取元素1 (), 局线2.取元素2 (), 局线2.取元素3 (), 局线2.取元素4 ()))
视觉_放置文本Zi (图像指针, “yes”, 10, 25, #字体_衬线_复杂, 0.5, 颜色, 1, 8, )
视觉_延伸 (图像指针, 局线1.取元素1 (), 局线1.取元素2 (), 局线1.取元素3 (), 局线1.取元素4 (), 延长线始, 延长线终)
视觉_虚线d (图像指针, 延长线始, 延长线终, 15, 颜色, 1, 8, 0)
颜色.赋值 (0, 0, 255, 0)
视觉_放置文本Zi (图像指针, “no”, 10, 25, #字体_衬线_复杂, 0.5, 颜色, 1, 8, )

子程序名返回值类型公开备 注
调整线 确定鼠标左键点击在两条直线的那个点上
参数名类 型参考可空数组备 注
l1双精度向量4
l2双精度向量4
area1双精度向量6
w双精度小数型
h双精度小数型
判断 (area1.取元素1 () = 0)
l1.赋值 (area1.取元素2 () + w, area1.取元素3 () + h, l1.取元素3 (), l1.取元素4 ())
判断 (area1.取元素1 () = 1)
l1.赋值 (area1.取元素2 () + w, area1.取元素3 () + h, area1.取元素4 () + w, area1.取元素5 () + h)
判断 (area1.取元素1 () = 2)
l1.赋值 (l1.取元素1 (), l1.取元素2 (), area1.取元素2 () + w, area1.取元素3 () + h)
判断 (area1.取元素1 () = 3)
l2.赋值 (area1.取元素2 () + w, area1.取元素3 () + h, l2.取元素3 (), l2.取元素4 ())
判断 (area1.取元素1 () = 4)
l2.赋值 (area1.取元素2 () + w, area1.取元素3 () + h, area1.取元素4 () + w, area1.取元素5 () + h)
如果真 (area1.取元素1 () = 5)
l2.赋值 (l2.取元素1 (), l2.取元素2 (), area1.取元素2 () + w, area1.取元素3 () + h)



i支持库列表   支持库注释   
cv(未知支持库)
spec特殊功能支持库


链接:https://pan.baidu.com/s/1VSYkILerRQsoDiIhl-6eTQ
提取码:4ypk
复制这段内容后打开百度网盘手机App,操作更方便哦


您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表