一个halcon拟合直线的例子

read_image (hImage, 'E:/vs2012/halcon卡尺例程/白光碗光效果4.bmp')
get_image_pointer1(hImage, Pointer, Type, Width, Height)
*功能:获取一个通道的指针,得到HTuple  Pointer, Type, CurWidth, CurHeight
dev_set_draw('margin')
dev_set_color ('green')****************************************
* 卡尺---X轴
****************************************
*找边参数:长度m_dMeasureHeight ,滤波m_dMeasureSmooth ,对比度m_dMeasureContrast
draw_rectangle1(3600, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
XResultRows:=[]  
XResultCols:=[]
k:=0
*头文件---声明,定义变量
for Coli := Column1 to Column2 by 5									dLen := (Row2-Row1)/2dCol := ColidRow := (Row1+Row2)/2dPhi:=rad(90)m_dMeasureHeight:=5		m_dMeasureSmooth:=2m_dMeasureContrast:=60gen_rectangle2(Rect, dRow, dCol, dPhi, dLen, m_dMeasureHeight)gen_measure_rectangle2(dRow,dCol,dPhi,dLen,m_dMeasureHeight, Width, Height,'nearest_neighbor', tMeasureHandle)*measure_pos (hImage, tMeasureHandle, m_dMeasureSmooth, m_dMeasureContrast, 'positive', 'last', tTempRow, tTempCol, NULL, NULL)		
*功能:提取与矩形或环状弧垂直的直线边缘 ,last/positive和first/negative决定了找边的方向? 极性选择:暗到亮   measure_pos (hImage, tMeasureHandle, m_dMeasureSmooth, m_dMeasureContrast, 'negative', 'first', tTempRow, tTempCol, NULL, NULL)
*极性选择:亮到暗    if( |tTempRow|=1)	XResultRows:=[XResultRows,tTempRow]XResultCols:=[XResultCols,tTempCol]k:=k+1endifclose_measure(tMeasureHandle)
endfor
stop ()			
if (k>=30)dev_display(hImage)gen_contour_polygon_xld(hHoleContour,XResultRows,XResultCols)	
*功能:根据区域创建 XLD轮廓(contour)   fit_line_contour_xld(hHoleContour, 'tukey', -1, 0, 5, 2, XRowBegin, XColBegin, XRowEnd, XColEnd, XNr, XNc, XDist)
*功能:根据分割线近似获取 XLD轮廓(contour)    XCStart := 0XRStart := XDist/XNr    XCEnd := WidthXREnd := (XDist - (XCEnd * XNc))/XNrdev_display(hImage)gen_contour_polygon_xld (XContour, [XRStart,XREnd], [XCStart,XCEnd])
*     gen_region_line(XLine, XRStart, XCStart, XREnd, XCEnd)*********输出X轴角度 *********angle_ll(0, 0, 0, Width, XRStart, XCStart, XREnd, XCEnd, XAngle)
*功能:计算两条线的夹角
elseset_tposition(3600, 100, 100)write_string(3600, '找边失败') 
endif****************************************
* 卡尺---Y轴
****************************************
draw_rectangle1(3600, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
YResultRows:=[]  
YResultCols:=[]
k:=0
for Rowi := Row1 to Row2 by 5										dLen := (Column2-Column1)/2dRow := RowidCol := (Column1+Column2)/2dPhi:=0m_dMeasureHeight:=5		m_dMeasureSmooth:=2m_dMeasureContrast:=60gen_rectangle2(Rect, dRow, dCol, dPhi, dLen, m_dMeasureHeight)gen_measure_rectangle2(dRow,dCol,dPhi,dLen,m_dMeasureHeight, Width, Height,'nearest_neighbor', tMeasureHandle)measure_pos (hImage, tMeasureHandle, m_dMeasureSmooth, m_dMeasureContrast, 'positive', 'last', tTempRow, tTempCol, NULL, NULL)		if( |tTempRow|=1)	YResultRows:=[YResultRows,tTempRow]YResultCols:=[YResultCols,tTempCol]k:=k+1endifclose_measure(tMeasureHandle)
endfor
stop ()			
if (k>=30)dev_display(hImage)gen_contour_polygon_xld(hHoleContour,YResultRows,YResultCols)fit_line_contour_xld(hHoleContour, 'tukey', -1, 0, 5, 2, YRowBegin, YColBegin, YRowEnd, YColEnd, YNr, YNc, YDist)YRStart := 0YCStart := YDist/YNc    YREnd := HeightYCEnd := (YDist - (YREnd * YNr))/YNcdev_display(hImage)gen_contour_polygon_xld (YContour, [YRStart,YREnd], [YCStart,YCEnd])
*     gen_region_line(YLine, YRStart, YCStart, YREnd, YCEnd)***输出Y轴角度angle_ll(0, 0, 0, Width, YRStart, YCStart, YREnd, YCEnd, YAngle)
elseset_tposition(3600, 100, 100)write_string(3600, '找边失败') 
endifphi:=XAngle-YAngle
angle:=deg(phi)
*求交点
dev_display(hImage)
dev_display (XContour)
dev_display (YContour)
dev_set_color('red')
intersection_ll (YRStart, YCStart, YREnd, YCEnd, XRStart, XCStart, XREnd, XCEnd, Row, Column, IsParallel)
*功能:计算两条线的交集点(相交点)
gen_circle_contour_xld(ContCircle, Row, Column, 20, 0, 6.28318, 'positive', 1)
* dev_set_color ('green')
* intersection (YLine, XLine, RegionIntersection)
* area_center (RegionIntersection, Area, Row0, Column0)
* gen_cross_contour_xld(Cross0, Row0, Column0, 60, 0)

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

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

相关文章

NLP数据挖掘基础知识

Basis(基础): SSE(Sum of Squared Error, 平方误差和)SAE(Sum of Absolute Error, 绝对误差和)SRE(Sum of Relative Error, 相对误差和)MSE(Mean Squared Error, 均方误差)RMSE(Root Mean Squared Error, 均方根误差)RRSE(Root Relative Squared Error, 相对平方根误…

SQL Fundamentals || Oracle SQL语言

对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。 DDL(data defini…

圆形卡尺测量后创建模板

read_image (Image, QQ图片20201113111404.jpg) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) rgb1_to_gray (Image,Image) ****创建模板阶段 *大致找内圆 fast_threshold (Image, Region, 128, 255, 20) connecti…

fread函数和fwrite函数,read,write

fread函数和fwrite函数 1.函数功能 用来读写一个数据块。 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrit…

微信小程序 CSS filter(滤镜)的使用示例

前言 之前在看七月老师的视频的时候,看到了有一个样式是-webkit-filter,不知道是什么(我没咋学过CSS,嘿嘿,所以不知道是啥),于是查了一下,原来是滤镜吖。但是在微信小程序里使用的时…

vmware ubuntu重置root密码

1.重启ubuntu,按住shift(开机启动时) 2.选择recovery mode,enter 3.root选择root drop to root shell prompt 4.进入shell界面设置密码 (1)mount -rw -o remount / (2)passwd username(设置root用户的密码) 完成以上修改后,重启就…

halcon使用直线标定板,标定相机内参代码

read_image (Image, 直线标定板图片/Left201118140641772.bmp) get_image_size (Image, Width, Height) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) * Image Acquisition 01: Code generated by Image Acquisiti…

dyld: Library not loaded: @rpath/libswiftCore.dylib 解决方法

解决: 设置Build Setting - > 搜索 embe关键字 -> 修改属性 见如下图: 如果更新了Xcode 8 这里变成: 转载于:https://www.cnblogs.com/yajunLi/p/5979621.html

Bootloader及u-boot简介/u-boot系统启动流程

Bootloader及u-boot简介Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等。Bootloader 代码与CPU 芯片的内核结构…

Dubbo之RPC架构

为什么会有dubbo的出现: 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时&#xff0c…

区域路由的注册机制

AreaRegistration.RegisterAllAreas() 我们新建一个名称为Admin的Area,VS生成下面的代码。 { action , id 我们先来看AreaRegistration这个抽象类,实际上,它只有一个核心功能,就是RegisterAllAreas,获取所有继承它的…

Unix/Linux IPC及线程间通信总结

一、互斥与同步 1.互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 2.同步:是指在互斥的基础上(大多数情况)&#xff0…

CSS样式的插入方式

1.外部样式&#xff1a; 当样式需要应用于很多页面时&#xff0c;外部样式表将是理想的选择。<head><link rel"stylesheet" type"text/css" href"mystyle.css" /> </head> 2.内部样式 当单个文档需要特殊的样式时&#…

嵌入式Linux系统基础知识

一、嵌入式Linux系统的构成 1、硬件 2、内核 3、应用程序&#xff08;形成根文件系统&#xff09; 二、构建嵌入式Linux系统的主要任务 1、内核部分 2、应用程序部分 嵌入式Linux的开发大致可分为三个层次&#xff1a;引导装载内核、构造文件系统和图形用户界面。作为操作系统…

win10系统javac不是内部或外部命令,也不是可运行的程序 或批处理文件。

按照下面的步骤设置环境变量 说明&#xff1a; 1. 如果编辑的是系统环境变量&#xff0c;命令提示符需要以管理员权限运行&#xff1b;如果在用户环境变量中编辑&#xff0c;则当前用可直接运行命令提示符。 2. win10中的路径相对于win7要设置成绝对路径。 1&#xff0e;打开…

两个bat文件

1、修改后缀名 ren *.cs *.txt ren *.txt *.zip2、修改文件名称 echo offset a00setlocal EnableDelayedExpansionfor %%n in (*.txt) do (set /A a1ren "%%n" "!a!.txt")

各种排序笔记---基于比较排序部分

1. 选择排序 selection sort 大循环 从左到右每次以一个点开始扫描array 小循环 找到从当前起始点开始的最小值 时间复杂度为O(N^2) //selection sort an array array[] public class Solution {public int[] solve(int[] array) {if (array null || array.length 0) {return…

是什么让深度学习再次崛起并超越人类?

作者潘争&#xff0c;格灵深瞳计算机视觉工程师&#xff0c;清华大学自动化系博士&#xff0c;师从智能技术与系统国家重点实验室副主任张长水。深度学习(Deep Learning)这个词最近借着AlphaGO与李世石的人机大战又火了一把。深度学习其实是机器学习(Machine Learning)的一个分…

常见的流量问题

常见的流量问题 冗余内容同类请求被间隔执行&#xff0c;请求的内容包含一些相对静态的信息&#xff0c;正确的处理是第一次请求包括静态信息就好&#xff0c;后面的同类请求只包含必要的即时变化信息即可。错误的处理方式是每次请求服务器都返回一次静态信息。 冗余请求有的时…

halcon使用点拟合圆形时候,点集顺序紊乱,不影响圆形拟合效果

read_image (Image, 截图20201226094342972.bmp) * Matching 01: BEGIN of generated code for model initialization set_system (border_shape_models, false) * Matching 01: Obtain the model image * Matching 01: The image is assumed to be made available in the * Ma…