计算直线的垂线c语言,OpenCV 计算点到直线的距离并画出垂线

.版本 2

.程序集 程序集1

.程序集变量 背景, 多维矩阵类

.程序集变量 坐标, 二维整数坐标结构类, , "3", 存放3个点,分别是线外的点,线的起点,线的终点

.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行

.局部变量 颜色, 标量结构类

颜色.通道1 = 255

颜色.通道2 = 255

颜色.通道3 = 255

窗口_创建 (“小白鼠”, #窗口创建_自动适应)

背景.构造 (600, 400, #CV_8UC3, 颜色)  ' // 白色图片

背景.显示图像 (“小白鼠”)

窗口_添加鼠标事件 (“小白鼠”, &鼠标事件)

窗口_等待按键 ()

返回 (0)

.子程序 鼠标事件

.参数 事件, 整数型, , #鼠标事件_鼠标指针在窗口上移动

.参数 横坐标, 整数型

.参数 纵坐标, 整数型

.参数 标志, 整数型, , #鼠标标志_按住左键拖拽

.参数 回调参数, 整数型

.局部变量 步骤, 整数型, 静态, , 控制鼠标操作步骤

.局部变量 空白图片, 多维矩阵类

.局部变量 颜色, 标量结构类

.局部变量 距离, 整数型

.局部变量 局坐标, 二维整数坐标结构类

.判断开始 (事件 = #鼠标事件_按下鼠标左键)

.判断开始 (步骤 = 0)

坐标 [1].横坐标 = 横坐标

坐标 [1].纵坐标 = 纵坐标

步骤 = 1

.默认

.如果真 (步骤 = 1)

坐标 [2].横坐标 = 横坐标

坐标 [2].纵坐标 = 纵坐标

坐标 [3].横坐标 = 横坐标

坐标 [3].纵坐标 = 纵坐标

步骤 = 2

.如果真结束

.判断结束

.判断 (事件 = #鼠标事件_鼠标指针在窗口上移动)

.如果真 (步骤 = 2)

坐标 [3].横坐标 = 横坐标

坐标 [3].纵坐标 = 纵坐标

.如果真结束

.判断 (事件 = #鼠标事件_释放鼠标左键)

.如果真 (步骤 = 2)

步骤 = 3

.如果真结束

.默认

.如果真 (事件 = #鼠标事件_按下鼠标右键)

步骤 = 0

连续赋值 (0, 坐标 [1].横坐标, 坐标 [1].纵坐标, 坐标 [2].横坐标, 坐标 [2].纵坐标, 坐标 [3].横坐标, 坐标 [3].纵坐标)

.如果真结束

.判断结束

' ------------------------------------画图---------------------------------

背景.复制 (空白图片)  ' 拷贝空白图片,方便重复画图

.如果真 (坐标 [1].横坐标 ≠ 0 且 坐标 [1].纵坐标 ≠ 0)

颜色.通道1 = 255

颜色.通道2 = 0

颜色.通道3 = 0

图像绘制_圆形 (空白图片, 坐标 [1], 2, 颜色, -1, 8)  ' 画线外的蓝点

颜色.通道1 = 0

颜色.通道2 = 255

颜色.通道3 = 0

图像绘制_直线 (空白图片, 坐标 [2], 坐标 [3], 颜色, 2, 8)  ' 画绿线

距离 = 拟合运算_点到点的距离 (坐标 [2], 坐标 [3])

.如果真结束

.如果真 (步骤 = 3)

局坐标.横坐标 = 20

局坐标.纵坐标 = 40

颜色.通道1 = 0

颜色.通道2 = 0

颜色.通道3 = 255

.如果真 (坐标 [2].横坐标 ≠ 0 且 坐标 [2].纵坐标 ≠ 0)

.如果真 (距离 < 50)

图像绘制_文字 (空白图片, “line too short!”, 局坐标, #字体_衬线字体, 1, 颜色, 1, 8)

.如果真结束

.如果真结束

' -----------------------------计算垂足坐标-----------------------------

拟合运算_点到线的距离 (坐标 [1], 坐标 [2], 坐标 [3], 局坐标)

' -----------------------------画红色的垂线-----------------------------

图像绘制_直线 (空白图片, 坐标 [1], 局坐标, 颜色, 2, 8)

.如果真结束

空白图片.显示图像 (“小白鼠”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值