开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1990|回复: 21
打印 上一主题 下一主题
收起左侧

[原创视频分享] 易语言开发视觉双相机定位分享

[复制链接]
结帖率:0% (0/2)
跳转到指定楼层
楼主
发表于 2024-6-7 22:44:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式   广西壮族自治区北海市
如果有热度就分享源代码
结合halcon19版本开发
  
如果真 (打开所有相机 = 10)
延时 (10)
hal.复制图像 (相机1图片, Image)
图像预处理1 ()
' hal.设置模型参数 (模板句柄, “timeout”, 100)
左边结果 = hal.单模型寻找不同形状 (Image, 模板句柄, 0, 360, 0.9, 1.1, 0.9, 1.1, 到小数 (编辑框12.内容), 1, 0.5, “least_squares”, 到整数 (编辑框11.内容), 0.9, 返回Y, 返回X, 返回角度, , , 返回分数)
' 左边结果 = hal.寻找形状匹配模型 (Image, 模板句柄, 0, 360, 到小数 (编辑框12.内容), 1, 0.5, “least_squares”, 到整数 (编辑框11.内容), 0.9, 返回Y, 返回X, 返回角度, 返回分数)
如果 (hal.弧度到角度 (返回角度).取元组小数 () > 90)
角度转换 = hal.弧度到角度 (返回角度).取元组小数 () - 360
角度转换 = hal.弧度到角度 (返回角度).取元组小数 ()

如果真 (左边结果 = 0)
' hal.求点和角到刚性仿射变换 (0, 0, 0, 返回Y, 返回X, 返回角度, 矩阵左)
' hal.仿射变换XLD (模板轮廓, 临时轮廓, 矩阵左)
hal.创建矩形 (临时矩形, 返回Y, 返回X, 返回角度, 400, 400)
编辑框4.内容 = 到文本 (角度转换)
编辑框5.内容 = 到文本 (返回X.取元组小数 ())
编辑框6.内容 = 到文本 (返回Y.取元组小数 ())
编辑框7.内容 = 到文本 (到数值 (编辑框5.内容)到数值 (编辑框500.内容))
编辑框8.内容 = 到文本 (到数值 (编辑框6.内容)到数值 (编辑框600.内容))
编辑框902.内容 = 到文本 (到数值 (编辑框4.内容)到数值 (编辑框900.内容))
编辑框602.内容 = 编辑框8.内容
编辑框502.内容 = 编辑框7.内容
如果真 (返回Y.取元组小数 () ≠ 0 返回X.取元组小数 () ≠ 0)
延时 (10)
线程ID1 = 线程_启动 (&找交点)
临时矩形.显示 (窗口ID)


i支持库列表   支持库注释   
ehalcon_ch(未知支持库)


  
' 找交点代码
如果真 (左边结果 ≠ 2)
' hal.清除窗口 (WindowHandle)
' hal.dev打开窗口 (0, 0, 图片框1.宽度, 图片框1.高度, “black”, WindowHandle)
hal.复制图像 (Image, Image2)
hal.取图像的尺寸 (Image2, Image高, Image宽)
hal.显示图像局部 (WindowHandle, 0, 0, Image宽, Image高)
hal.RGB1转灰度 (Image2, Image2)
' hal.读取图像 (Image2, “E:/视觉软件/halcon案例/halcon案例/08Halcon卡尺找边/2.png”)
hal.设置颜色 (WindowHandle, “red”)
hal.显示图像对象 (Image2, WindowHandle)
hal.取图像的尺寸 (Image2, Image高, Image宽)
hal.设置线宽 (WindowHandle, 2)
Row1 = hal.取整数 (到小数 (编辑框17.内容)到小数 (编辑框8.内容))
Column1 = hal.取整数 (到小数 (编辑框18.内容)到小数 (编辑框7.内容))
Row2 = hal.取整数 (到小数 (编辑框19.内容)到小数 (编辑框8.内容))
Column2 = hal.取整数 (到小数 (编辑框20.内容)到小数 (编辑框7.内容))
' hal.交互绘直线 (WindowHandle, Row1, Column1, Row2, Column2)
hal.赋值 (Line, hal.创建元组 (Row1, Column1, Row2, Column2))
hal.创建计量模型 (MetrologyHandle)
hal.设置计量模型图像大小 (MetrologyHandle, Image高, Image宽)
hal.添加计量对象通用 (MetrologyHandle, “line”, Line, 20, 5, 1, 15, hal.创建元组 (), hal.创建元组 (), Index)
hal.应用计量模型 (Image2, MetrologyHandle)
hal.取计量对象测量 (Contours, MetrologyHandle, “all”, “all”, Row, Column)
hal.创建十字XLD轮廓 (Cross, Row, Column, 1, 0.785398)
hal.取计量对象结果 (MetrologyHandle, “all”, “all”, “result_type”, “all_param”, Parameter)
hal.取计量对象模型轮廓 (Contour, MetrologyHandle, “all”, 1.5)
hal.清除计量模型 (MetrologyHandle)
' *拟合成直线
hal.创建多边形XLD轮廓 (Contour5, Row, Column)
hal.XLD轮廓拟合直线 (Contour5, “tukey”, -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1)
' *这里主要是为了算角度
hal.线位置 (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowCenter, ColCenter, Length, Phi)
' *算角度
hal.赋值 (radian, Phi)
hal.赋值 (degree, hal. (hal. (radian, 180), 3.1415926))
编辑框2302.内容 = 到文本 (degree.取元组小数 ())
' *这个步骤才是构造无限长度直线
hal.XLD轮廓拟合直线 (Contour5, “tukey”, -1, 0, 5, 2, Row11, Column11, Row22, Column22, Nr1, Nc1, Dist1)
' hal.显示图像对象 (Contour5, 窗口ID)
' *特殊情况水平线
判断 (hal.等于 (hal. (Row22, Row11), 0))
hal.赋值 (k, 0)
hal.创建多边形XLD轮廓 (Contour, hal.创建元组 (Row22, Row22), hal.创建元组 (0, Image高))
k = hal.取整数 ( (Column22.取元组小数 () - Column11.取元组小数 ()) ÷ (Row22.取元组小数 () - Row11.取元组小数 ()))
hal.赋值 (b, hal. (Column22, hal. (k, Row22)))
hal.赋值 (Row1, 0)
hal.赋值 (Row2, hal. (Image宽, 1))
hal.赋值 (col1, hal. (hal. (k, Row1), b))
hal.赋值 (col2, hal. (hal. (k, Row2), b))
hal.创建多边形XLD轮廓 (Contour, hal.创建元组 (Row1, Row2), hal.创建元组 (col1, col2))

hal.显示图像对象 (Contour, 窗口ID)
' hal.交互绘直线 (WindowHandle, Row111, Column111, Row222, Column222)
Row111 = hal.取整数 (到小数 (编辑框21.内容)到小数 (编辑框8.内容))
Column111 = hal.取整数 (到小数 (编辑框22.内容)到小数 (编辑框7.内容))
Row222 = hal.取整数 (到小数 (编辑框23.内容)到小数 (编辑框8.内容))
Column222 = hal.取整数 (到小数 (编辑框24.内容)到小数 (编辑框7.内容))
' Row111 = hal.取整数 (编辑框21.内容)
' Column111 = hal.取整数 (编辑框22.内容)
' Row222 = hal.取整数 (编辑框23.内容)
' Column222 = hal.取整数 (编辑框24.内容)
hal.赋值 (Line, hal.创建元组 (Row111, Column111, Row222, Column222))
hal.创建计量模型 (MetrologyHandle1)
hal.设置计量模型图像大小 (MetrologyHandle1, Image高, Image宽)
hal.添加计量对象通用 (MetrologyHandle1, “line”, Line, 20, 5, 1, 15, hal.创建元组 (), hal.创建元组 (), Index)
hal.设置颜色 (WindowHandle, “red”)
hal.应用计量模型 (Image2, MetrologyHandle1)
' *生成的轮廓
hal.取计量对象测量 (Contours1, MetrologyHandle1, “all”, “all”, Row3, Column3)
' *生成叉叉的记号
hal.创建十字XLD轮廓 (Cross1, Row3, Column3, 1, 0.785398)
hal.取计量对象结果 (MetrologyHandle1, “all”, “all”, “result_type”, “all_param”, Parameter)
' *生成中间的那条横线
hal.取计量对象模型轮廓 (Contour1, MetrologyHandle1, “all”, 1.5)
hal.清除计量模型 (MetrologyHandle1)
' *拟合直线
hal.创建多边形XLD轮廓 (Contour2, Row3, Column3)
hal.XLD轮廓拟合直线 (Contour2, “tukey”, -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
' hal.显示图像对象 (Contour2, 窗口ID)
' *算角度
hal.线位置 (RowBegin, ColBegin, RowEnd, ColEnd, RowCenter1, ColCenter1, Length1, Phi1)
' *算角度
hal.赋值 (radian1, Phi1)
hal.赋值 (degree1, hal. (hal. (radian1, 180), 3.1415926))
编辑框2303.内容 = 到文本 (degree1.取元组小数 ())
' 编辑框4.内容 = 到文本 (degree1.取元组小数 ())
' 编辑框9.内容 = 到文本 (到数值 (编辑框4.内容) - 到数值 (编辑框900.内容))
hal.XLD轮廓拟合直线 (Contour2, “tukey”, -1, 0, 5, 2, Row11, Column11, Row22, Column22, Nr1, Nc1, Dist1)
' hal.显示图像对象 (Contour2, 窗口ID)
' *特殊情况水平线
判断 (hal.等于 (hal. (Row22, Row11), 0))
hal.赋值 (k, 0)
hal.创建多边形XLD轮廓 (Contour1, hal.创建元组 (Row22, Row22), hal.创建元组 (0, Image高))
k = hal.取整数 ( (Column22.取元组小数 () - Column11.取元组小数 ()) ÷ (Row22.取元组小数 () - Row11.取元组小数 ()))
hal.赋值 (b, hal. (Column22, hal. (k, Row22)))
hal.赋值 (Row1, 0)
hal.赋值 (Row2, hal. (Image宽, 1))
hal.赋值 (col1, hal. (hal. (k, Row1), b))
hal.赋值 (col2, hal. (hal. (k, Row2), b))
hal.创建多边形XLD轮廓 (Contour1, hal.创建元组 (Row1, Row2), hal.创建元组 (col1, col2))

hal.显示图像对象 (Contour1, 窗口ID)
hal.求线段交点 (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowBegin, ColBegin, RowEnd, ColEnd, Row6, Column4, IsOverlapping)
hal.创建十字XLD轮廓 (Cross2, Row6, Column4, 200, 0.785398)
找到交点 = hal.显示图像对象 (Cross2, 窗口ID)
编辑框42.内容 = 到文本 (找到交点)
取交点原点Y = 到数值 (Row6.取元组小数 ())
取交点原点X = 到数值 (Column4.取元组小数 ())
编辑框2300.内容 = 到文本 (到数值 (Row6.取元组小数 ()) - 到数值 (编辑框800.内容))
编辑框2301.内容 = 到文本 (到数值 (Column4.取元组小数 ()) - 到数值 (编辑框801.内容))
编辑框2506.内容 = 编辑框2300.内容
编辑框2507.内容 = 编辑框2301.内容
hal.保存窗口到文件 (窗口ID, “png”, 取运行目录 ()“\测试完成图片\”到文本 (取现行时间 ()) + “_” + 编辑框10.内容 + “_左”)
如果 (编辑框2300.内容 ≠ “” 编辑框2301.内容 ≠ “”)
如果真 (按钮25.标题 = “标定开启”)
延时 (10)
线程_启动 (&标定A)

如果真 (到整数 (编辑框2302.内容) = 0 到整数 (编辑框2303.内容) = 0)
标签6.文本颜色 = #红色
标签6.标题 = “NG”
编辑框3.加入文本 (到文本 (取现行时间 ()) + “:左交点未生成,左计算NG”#换行符 )
编辑框20006.内容 = “2”


i支持库列表   支持库注释   
ehalcon_ch(未知支持库)



结帖率:0% (0/2)
沙发
 楼主| 发表于 2024-6-7 22:47:38 | 只看该作者   广西壮族自治区北海市
附加软件界面

111.png (13 KB, 下载次数: 0)

111.png

11.png (35.18 KB, 下载次数: 0)

11.png

1111.png (25.69 KB, 下载次数: 0)

1111.png

1.png (315.21 KB, 下载次数: 0)

1.png
回复 支持 反对

使用道具 举报

签到天数: 5 天

板凳
发表于 2024-6-7 23:56:21 | 只看该作者   福建省宁德市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:70% (35/50)

签到天数: 11 天

地板
发表于 2024-6-8 04:28:25 | 只看该作者   广西壮族自治区南宁市
看不懂,这能校验打印机吗,感觉用途有限
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 1 天

地下
发表于 2024-6-8 10:49:57 | 只看该作者   广东省佛山市
niubiniubi666666
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
6
 楼主| 发表于 2024-6-8 17:42:50 | 只看该作者   广西壮族自治区北海市

分享那方面的?抓图还是找线
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
7
 楼主| 发表于 2024-6-8 17:43:22 | 只看该作者   广西壮族自治区北海市
cs潇潇 发表于 2024-6-8 04:28
看不懂,这能校验打印机吗,感觉用途有限

主要是视觉定位这方面的
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
8
 楼主| 发表于 2024-6-8 17:44:08 | 只看该作者   广西壮族自治区北海市

谢谢老铁
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
9
 楼主| 发表于 2024-6-8 17:50:56 | 只看该作者   广西壮族自治区北海市
每天分享一点从创建窗口开始,分享
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
相机ID视觉元组  
相机ID1视觉元组  
窗口ID视觉元组  
窗口ID1视觉元组  
窗口ID2视觉元组  
窗口ID3视觉元组  
halHalcon19  
Image视觉对象  
Image高视觉元组  
Image宽视觉元组  
Image1视觉对象  
Image1高视觉元组  
Image1宽视觉元组  
绘制矩形视觉对象  
模板句柄视觉元组  
绘制矩形1视觉对象  
模板句柄1视觉元组  
模板轮廓视觉对象  
模板轮廓1视觉对象  
返回X视觉元组  
返回Y视觉元组  
返回角度视觉元组  
返回分数视觉元组  
中心Y双精度小数型  
中心X双精度小数型  
长半轴角度双精度小数型  
长半轴长度双精度小数型  
短半轴长度双精度小数型  
取原点X双精度小数型  
取原点Y双精度小数型  
取原点R视觉元组  
返回1X视觉元组  
返回1Y视觉元组  
返回角度1视觉元组  
返回分数1视觉元组  
中心1Y双精度小数型  
中心1X双精度小数型  
长半轴角度1双精度小数型  
长半轴长度1双精度小数型  
短半轴长度1双精度小数型  
取原点1X双精度小数型  
取原点1Y双精度小数型  
取原点1R视觉元组  
取交点原点X双精度小数型  
取交点原点Y双精度小数型  
取交点原点1X双精度小数型  
取交点原点1Y双精度小数型  
t整数型  
PLC接通逻辑型  
起点Y视觉元组  
起点X视觉元组  
终点Y视觉元组  
终点X视觉元组  
起点1Y视觉元组  
起点1X视觉元组  
终点1Y视觉元组  
终点1X视觉元组  
矩阵视觉元组  
临时矩阵视觉元组  
左边结果整数型  
右边结果整数型  
取图像原点Y文本型  
取图像原点X文本型  
启动软件整数型  
RB连接站点号整数型  
打开相机1短整数型  
打开相机2短整数型  
线程ID1整数型  
线程ID2整数型  
图像处理中整数型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
hal.打开窗口 (0, 0, 图片框1.宽度, 图片框1.高度, 图片框1.取窗口句柄 (), #视觉_窗口模式_可视, , 窗口ID)
hal.打开窗口 (0, 0, 图片框4.宽度, 图片框4.高度, 图片框4.取窗口句柄 (), #视觉_窗口模式_可视, , 窗口ID1)
hal.打开窗口 (0, 0, 图片框2.宽度, 图片框2.高度, 图片框2.取窗口句柄 (), #视觉_窗口模式_可视, , 窗口ID2)
hal.打开窗口 (0, 0, 图片框3.宽度, 图片框3.高度, 图片框3.取窗口句柄 (), #视觉_窗口模式_可视, , 窗口ID3)
hal.设置颜色 (窗口ID, #视觉_颜色_红色 )
hal.设置填充模式 (窗口ID, “margin”)
hal.设置线宽 (窗口ID, 3)
hal.设置颜色 (窗口ID1, #视觉_颜色_红色 )
hal.设置填充模式 (窗口ID1, “margin”)
hal.设置线宽 (窗口ID1, 3)
hal.设置颜色 (窗口ID2, #视觉_颜色_红色 )
hal.设置填充模式 (窗口ID2, “margin”)
hal.设置线宽 (窗口ID2, 3)
hal.设置颜色 (窗口ID3, #视觉_颜色_红色 )
hal.设置填充模式 (窗口ID3, “margin”)
hal.设置线宽 (窗口ID3, 3)


i支持库列表   支持库注释   
ehalcon_ch(未知支持库)

回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 10 天

10
发表于 2024-6-9 09:45:45 | 只看该作者   山东省淄博市
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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