例图:

完整算法:

 read_image (Image, 'C:/Users/Administrator/Desktop/1.png')
threshold (Image, Regions, , ) skeleton(Regions,TriangleSkeleton) gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter') segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2) select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5) fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)

*计算三个夹角
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle1)
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle2)
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle3) Angle1:=abs(deg(Angle1))
Angle2:=abs(deg(Angle2))
Angle3:=abs(deg(Angle3)) dev_display (Image)
dev_display (SelectedContours)
disp_message (, '角度:' + Angle1 + '°、 ' + Angle2 + '°、 ' + Angle3 + '°', 'image', , , 'red', 'true')

结果:

步骤分析:

① 图像三角形主要由3根直线构成;

阈值化、skeleton提取骨架、将骨架(region)转为xld、将xld打散分割、筛选xld得到3条主xld、将这3条xld拟合成3条直线

效果分析:

这种算法虽然步骤简单,但是其实鲁棒性并不好。主要风险在“筛选xld得到3条主xld”这一步,有时候,它没办法准确筛选到我们想要的xld,这样后面的准确拟合也就无从谈起。

用过VisionPro的都知道,VisionPro它有抓边的卡尺工具,它直接作用于图像,简单分析就知道鲁棒性好得多。可惜的是halcon并没有直接提供类似工具,不过网上有大神做了个halcon自己的卡尺工具——rake函数。

除非线条特征特别明显的图片,不然不建议使用本例的算法去抓边,类似于rake的抓边工具鲁棒性更好,抓边能力也更强。

当然,如果你足够有耐心,也可以根据本例以及halcon的测量(Measure)助手设计自己的抓边工具(函数)。

分析一则halcon抓边拟合直线的小案例的更多相关文章

  1. halcon之最小二乘拟合直线

    如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用ho ...

  2. python抓取网页图片的小案例

    1.分析 ,要抓取的页面的信息以及对应的源码信息 blog.sina.com.cn/s/blog 93dc666c0101b1bj.html 2.代码模块: 导入正则表达的模块 导入url相关的模块 ...

  3. python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片

    分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片.这里分析ajax请求,获取cosplay美女图片. 登陆今日头条,点击搜索,输入cosplay 下面查看浏览 ...

  4. [MXNet逐梦之旅]练习一·使用MXNet拟合直线手动实现

    [MXNet逐梦之旅]练习一·使用MXNet拟合直线手动实现 code #%% from matplotlib import pyplot as plt from mxnet import autog ...

  5. python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)

    python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...

  6. python爬虫---实现项目(二) 分析Ajax请求抓取数据

    这次我们来继续深入爬虫数据,有些网页通过请求的html代码不能直接拿到数据,我们所需的数据是通过ajax渲染到页面上去的,这次我们来看看如何分析ajax 我们这次所使用的网络库还是上一节的Reques ...

  7. python matplotlib拟合直线

    import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['sans-serif'] plt. ...

  8. 小迪安全 Web安全 基础入门 - 第三天 - 抓包&封包&协议&APP&小程序&PC应用&WEB应用

    一.抓包工具 1.Fiddler.Fiddler是一个用于HTTP调试的代理服务器应用程序,能捕获HTTP和HTTPS流量,并将其记录下来供用户查看.它通过使用自签名证书实现中间人攻击来进行日志记录. ...

  9. Halcon使用骨架法处理激光条并拟合直线

    dev_close_window () * 设置颜色 dev_set_color ('green') * 读取图像 read_image (Image, 'images3/1') * 获得图像尺寸 g ...

随机推荐

  1. 中国的 Python 量化交易工具链有哪些

    摘抄自知乎:https://www.zhihu.com/question/28557233 如题,提问的范围限于适合中国大陆金融市场使用的工具链,所以IbPy和Quotopian之类主要面向欧美市场的 ...

  2. Codeforces 133A:HQ9+

    A. HQ9+ time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  3. nodejs json-t 基本测试

    安装npm包 npm i json-templater or yarn add json-templater 基本代码 var render = require('json-templater/str ...

  4. graphql 文档 docker 镜像

    因为一些原因 graphql 的官方文档无法查看,后者查看不能是方便,所以在官方github 的文档基础上添加了容器构建, 方便进行查看,对于公司内部使用学习会比较好 原理 很简单,openresty ...

  5. 零基础学Cocos2d-X 3.0 - 04

    忙完两个项目后.最终有时间继续学习Cocos2d-X 了. 常听人说.Cocos2d-X 有四个类是最经常使用的,包含: Director 类----> 导演 Scene 类 -----> ...

  6. socket编程---UDP

    头文件 #include <sys/types.h> #include <sys/socket.h> 函数原型 int sendto (int s, const void *b ...

  7. php在循环内外实例化类占用内存比较

    关于php类的实例化和内存的关系,可以这么说:只要有一个new 关键字就是创建一个对象,创建一个对象就是在内存中分配了一个空间. 代码1: 在循环外实例化类:class ABC{ public $nu ...

  8. Jqmobile Secha Ionic比较

    1. Jqmobile 轻量级框架,它的语言基于 jquery 语言容易上手,运行速度快,但是没有 MVC 多人协作 开发的概念,项目比较大后 代码不易维护     (中小项目  1-2 个人开发很适 ...

  9. mysql负载均衡完美解决方案

    http://blog.csdn.net/v1v1wang/article/details/8771974 1.环境: mysql 5ubuntu10.04 x86_64 mdb1        et ...

  10. Makefile中进行宏定义-***

    实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解 ...