HALCON示例程序measure_ring.hdev齿轮齿宽度测量

HALCON示例程序measure_ring.hdev齿轮齿宽度测量

示例程序源码(加注释)

  • 关于显示类函数解释
    read_image (Image, ‘rings_and_nuts’)
    dev_close_window ()
    dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)
    set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
    get_image_size (Image, Width, Height)
  • 使用灰度直方图分割图像
    binary_threshold (Image, Region, ‘max_separability’, ‘dark’, UsedThreshold)
    connection (Region, ConnectedRegions)
    fill_up (ConnectedRegions, RegionFillUp)
  • 返回区域紧凑度
    compactness (RegionFillUp, Compactness)
    for i := 0 to |Compactness| - 1 by 1
    if (Compactness[i] > 1.5 and Compactness[i] < 2.5)
    select_obj (RegionFillUp, ObjectSelected, i + 1)
    * 最小外接圆
    smallest_circle (ObjectSelected, Row, Column, RadiusMax)
    * 最大内接圆
    inner_circle (ObjectSelected, CenterRow, CenterCol, RadiusMin)
    Radius := (RadiusMax + RadiusMin) / 2.0
    AnnulusRadius := (RadiusMax - RadiusMin) / 4.0
    * 得到区域轮廓的多边形
    get_region_polygon (ObjectSelected, AnnulusRadius, RowsBorder, ColumnsBorder)
    SqrDistanceBorder := (RowsBorder - CenterRow) * (RowsBorder - CenterRow) + (ColumnsBorder - CenterCol) * (ColumnsBorder - CenterCol)
    * 按照升序对数组排序并返回索引号
    tuple_sort_index (SqrDistanceBorder, Indices)
    * 求取线性角度
    line_orientation (CenterRow, CenterCol, RowsBorder[Indices[0]], ColumnsBorder[Indices[0]], AngleStart)
    AngleExtent := rad(360)
    Interpolation := ‘bilinear’
    * 准备提取垂直于环形弧的直边。
    gen_measure_arc (CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation, MeasureHandle)
    Sigma := 1.0
    Threshold := 30
    Transition := ‘negative’
    Select := ‘all’
    * 提取垂直于矩形或环形弧的直边对。
    measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
    distance_pp (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, LinearDistance)
    AngularDistance := deg(IntraDistance / Radius)
    gen_empty_obj (Crosses)
    for J := 0 to |RowEdgeFirst| - 1 by 1
    gen_cross_contour_xld (Cross1, RowEdgeFirst[J], ColumnEdgeFirst[J], 12, atan2(CenterRow - RowEdgeFirst[J],ColumnEdgeFirst[J] - CenterCol))
    gen_cross_contour_xld (Cross2, RowEdgeSecond[J], ColumnEdgeSecond[J], 12, atan2(CenterRow - RowEdgeSecond[J],ColumnEdgeSecond[J] - CenterCol))
    concat_obj (Crosses, Cross1, Crosses)
    concat_obj (Crosses, Cross2, Crosses)
    endfor
    dev_display (Image)
    dev_set_line_width (2)
    dev_set_color (‘green’)
    dev_display (Crosses)
    Message := 'Number of cogs: ' + |RowEdgeFirst| Message[1] := 'Mean cog size:' Message[2] := '- Arc length: ' + mean(IntraDistance)$'.2f' + ' +/- ' + deviation(IntraDistance)$'.2f' + ' pixel' Message[3] := '- Linear: ' + mean(LinearDistance)$'.2f' + ' +/- ' + deviation(LinearDistance)$'.2f' + ' pixel' Message[4] := '- Angular: ' + mean(AngularDistance)$'.2f' + ' +/- ' + deviation(AngularDistance)$'.2f' + ' deg' disp_message (WindowHandle, Message, 'window', 260, 10, 'black', 'true')
    close_measure (MeasureHandle)
    disp_continue_message (WindowHandle, ‘black’, ‘true’)
    stop ()
    endif
    endfor

处理思路

这个例子是主要讲解了如何使用gen_measure_arc、measure_pairs 搭配提取垂直圆弧的直边。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RBGD的mapping

最近学习RGBD的SLAM&#xff0c;收集了两个RGBD的mapping的开源工具包 1.RGBDSlam2 a.安装方法&#xff1a; #准备工作空间 source /opt/ros/indigo/setup.bash mkdir -p ~/rgbdslam_catkin_ws/src cd ~/rgbdslam_catkin_ws/src catkin_init_workspace cd ~/rgbdslam_catkin_ws…

【瓜分5000元奖金】Wannafly挑战赛13

链接&#xff1a;https://www.nowcoder.com/acm/contest/80/A来源&#xff1a;牛客网 zzy的小号 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K64bit IO Format: %lld题目描述 学家zzy根据字体的特点&#…

X264参数设定详细解释

x264 core:65 r1074M b6bb3d4 Syntax: x264 [options] -o outfile infile [widthxheight] 语法(命令行写法)&#xff1a;x264 [参数] -o 输出文件名 输入文件名 [宽x高] 范例&#xff1a; x264 --crf 26 --ref 3 --mixed-refs --bframes 3 --b-adapt 2 --b-pyramid --weightb -…

20145217《网络对抗》 恶意代码分析

20145217《网络对抗》 免杀原理与实践 知识点学习总结 进行恶意代码分析之前必须具备以下知识&#xff1a;编程、汇编/反汇编、网络基本知识、PE文件结构以及一些常用行为分析软件。 一、在一个已经感染了恶意代码的机器上如何找到病毒文件&#xff1f; 找到恶意代码才能对其分…

HALCON示例程序measure_screw.hdev螺纹尺寸测量

HALCON示例程序measure_screw.hdev螺纹尺寸测量 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () read_image (Image, ‘screw_thread’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window…

边工作边刷题:70天一遍leetcode: day 97-2

Design Hit Counter 要点&#xff1a;因为是second granularity&#xff0c;所以可以用以秒为单位的circular buffer方法。这题简单在只需要count过去300秒的&#xff0c;增加难度可以count过去秒&#xff0c;分钟&#xff0c;小时。 2个时间点都有可能更新超时的统计&#xff…

cvRemap 对图像进行普通几何变换

cvRemap 对图像进行普通几何变换 函数 cvRemap 利用下面指定的矩阵变换输入图像:   dst(x,y)<-src(mapx(x,y),mapy(x,y))   与其它几何变换类似&#xff0c;可以使用一些插值方法&#xff08;由用户指定&#xff0c;同cvResize&#xff09;来计算非整数坐标的像素值 vo…

disconf(二):服务端使用总结

1、服务端原理客户端启动&#xff0c;把配置文件&#xff0c;配置项存到仓库&#xff0c;等到服务端启动&#xff0c;从服务端拉取数据&#xff1b;服务端更新&#xff0c;则通过zk通知客户端&#xff0c;客户端知道更新后&#xff0c;会从服务端拉取最新的配置文件&#xff0c…

B2C和B2B之间有多大差距

从产品应用的角度&#xff0c;我们团队经历了企图将B2C系统套用到B2B业务流程上的阶段&#xff0c;对于自营业务这还勉强可以实施&#xff0c;但对于外部用户的实施难度就太大了&#xff0c;用户体验也不好。这个过程中&#xff0c;我只关注了技术范畴的迭代速度、而忽略了用户…

h.264 视频解码的一点小经验(ffmpeg)

最近做视频文件264解码&#xff0c;由于对这个领域不是很熟悉&#xff0c;感觉困难重重。不过经过不懈的努力&#xff0c;已经取得一些进展&#xff0c;心里感觉特别庆幸。 刚开始做这个的时候&#xff0c;由于不熟悉&#xff0c;就在网上搜寻资料&#xff0c;网络上的资料虽然…

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_window (‘off’) read_image (Image, ‘plastic_mesh/plastic_mesh_01’) dev_close_window () get_image_size (Image, Width…

配置云服务器 FTP 服务

自己配置的环境: OS: 阿里云 CentOS 6.5 >>Begin: 1. 登录到阿里云服务器(如何登录阿里云服务器), 在root权限下, 通过如下命令安装 vsftp [rootVM_250_202_tlinux ~]# yum install vsftpd 2. 在启动vsftpd服务之前&#xff0c;需要登录云服务器修改配置文件&#xff0c;…

【跃迁之路】【428天】程序员高效学习方法论探索系列(实验阶段185-2018.04.09)...

(跃迁之路)专栏 实验说明 从2017.10.6起&#xff0c;开启这个系列&#xff0c;目标只有一个&#xff1a;探索新的学习方法&#xff0c;实现跃迁式成长实验期2年&#xff08;2017.10.06 - 2019.10.06&#xff09;我将以自己为实验对象。我将开源我的学习方法&#xff0c;方法不断…

opencv中的一些陷阱 坑死我了~~~~(_)~~~~

1.这几天被opencv给坑的够惨&#xff0c;好好的程序&#xff0c;先是因为imread&#xff08;&#xff09;不能读文件&#xff0c;整了很久没整出来&#xff0c;然后改了下path路径&#xff0c;没想到后面彻底奔溃了&#xff0c;&#xff0c;&#xff0c;&#xff0c;前后大概2天…

一篇需要膜拜的文篇--Javascript异步编程模型进化(转)

要我能用得这么熟&#xff0c; 那前端出师了哈。 http://foio.github.io/javascript-asyn-pattern/ 改天一个一个亲测一下。 Javascript语言是单线程的&#xff0c;没有复杂的同步互斥&#xff1b;但是&#xff0c;这并没有限制它的使用范围&#xff1b;相反&#xff0c;借助于…

很强大的FFMPEG API Documentation

http://wiki.aasimon.org/doku.php?idffmpeg:ffmpeg 点击打开链接

HALCON示例程序obj_diff.hdev算子obj_diff 的使用

HALCON示例程序obj_diff.hdev算子obj_diff 的使用 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 read_image (Image, ‘particle’)二值化 threshold (Image, Region, 57, 255)分割连通域 connection (Region, ConnectedRegions) dev_close_window () get…

JS函数方法Call Apply Bind运用

JS 函数非继承的call和apply方法 同&#xff1a;call & apply 主要是用于扩展this指向&#xff0c;降低this作用域与函数之间的耦合度&#xff1b; 区别&#xff1a;传参差异 function.call(this/object,params1,params2,...) 第一个参数为作用域指向参数&#xff0c;后边参…

IplImage, CvMat, Mat 的关系和相互转换 再次理解 /(ㄒoㄒ)/~~

opencv中常见的与图像操作有关的数据容器有Mat&#xff0c;cvMat和IplImage&#xff0c;这三种类型都可以代表和显示图像&#xff0c;但是&#xff0c;Mat类型侧重于计算&#xff0c;数学性较高&#xff0c;openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“…

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image1, ‘xing/xing000’) dev_open_window_fit_ima…