halcon一维测量
2015-07-01 21:29
351 查看
halcon的一维测量核心步骤如下:
1.通过一个矩形ROI创建测量对象,他的ROI是一个Rect2矩形,将在这个矩形phi方向上测量。
2.调用单个尺寸测量或多个尺寸测量。
3.关闭测量对象。
代码如下:
[align=left]void TestProc1D(QWidget *w)[/align]
[align=left]{[/align]
QSize size
= w ->size();
HWindow *
display = new HWindow(0,0,size.width(),size.height(),( HWND)w ->winId(),"", "");
[align=left] HImage image;[/align]
[align=left] image.ReadImage( "F:/image/ic_pin.png");[/align]
[align=left] Hlong width,height;[/align]
[align=left] image.GetImageSize(&width,&height);[/align]
[align=left] display->SetPart(0,0,height,width);[/align]
[align=left] display->DispImage(image);[/align]
[align=left] double row,col,phi,lenght1,lenght2;[/align]
[align=left] display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);[/align]
[align=left] HMeasure measure(row,col,phi,lenght1,lenght2,image.Width(),image.Height(),"nearest_neighbor");[/align]
[align=left] HTuple rowEdge,colEdge,amps,distances;[/align]
[align=left] measure.MeasurePos(image,1,30, "all","all" ,&rowEdge,&colEdge,&s,&distances);[/align]
[align=left] display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);[/align]
Hlong n
= distances.Length();
qDebug()
<< "count : " << n;
for(Hlong i=0;
i<n; i++)
[align=left] {[/align]
qDebug()
<< distances[i].D() << ";";
[align=left] }[/align]
[align=left] //display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);[/align]
[align=left] display->DrawPoint(&row,&col);[/align]
[align=left] measure.TranslateMeasure(row,col);[/align]
[align=left] measure.MeasurePos(image,1,30, "all","all" ,&rowEdge,&colEdge,&s,&distances);[/align]
[align=left] display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);[/align]
[align=left] n = distances.Length();[/align]
qDebug()
<< "count : " << n;
for(Hlong i=0;
i<n; i++)
[align=left] {[/align]
qDebug()
<< distances[i].D() << ";";
[align=left] }[/align]
[align=left]}[/align]
[align=left]这里核心调用了MeasurePos这个函数,还有另外一个函数MeasurePair这两个函数的功能相同,只是输出结果的形式不同,MeasurePair的数据时配对输出的。在实际使用中需要调整MeasurePos函数的参数满足测试需求,核心的是一个阈值和一个模糊化因子。[/align]
1.通过一个矩形ROI创建测量对象,他的ROI是一个Rect2矩形,将在这个矩形phi方向上测量。
2.调用单个尺寸测量或多个尺寸测量。
3.关闭测量对象。
代码如下:
[align=left]void TestProc1D(QWidget *w)[/align]
[align=left]{[/align]
QSize size
= w ->size();
HWindow *
display = new HWindow(0,0,size.width(),size.height(),( HWND)w ->winId(),"", "");
[align=left] HImage image;[/align]
[align=left] image.ReadImage( "F:/image/ic_pin.png");[/align]
[align=left] Hlong width,height;[/align]
[align=left] image.GetImageSize(&width,&height);[/align]
[align=left] display->SetPart(0,0,height,width);[/align]
[align=left] display->DispImage(image);[/align]
[align=left] double row,col,phi,lenght1,lenght2;[/align]
[align=left] display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);[/align]
[align=left] HMeasure measure(row,col,phi,lenght1,lenght2,image.Width(),image.Height(),"nearest_neighbor");[/align]
[align=left] HTuple rowEdge,colEdge,amps,distances;[/align]
[align=left] measure.MeasurePos(image,1,30, "all","all" ,&rowEdge,&colEdge,&s,&distances);[/align]
[align=left] display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);[/align]
Hlong n
= distances.Length();
qDebug()
<< "count : " << n;
for(Hlong i=0;
i<n; i++)
[align=left] {[/align]
qDebug()
<< distances[i].D() << ";";
[align=left] }[/align]
[align=left] //display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);[/align]
[align=left] display->DrawPoint(&row,&col);[/align]
[align=left] measure.TranslateMeasure(row,col);[/align]
[align=left] measure.MeasurePos(image,1,30, "all","all" ,&rowEdge,&colEdge,&s,&distances);[/align]
[align=left] display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);[/align]
[align=left] n = distances.Length();[/align]
qDebug()
<< "count : " << n;
for(Hlong i=0;
i<n; i++)
[align=left] {[/align]
qDebug()
<< distances[i].D() << ";";
[align=left] }[/align]
[align=left]}[/align]
[align=left]这里核心调用了MeasurePos这个函数,还有另外一个函数MeasurePair这两个函数的功能相同,只是输出结果的形式不同,MeasurePair的数据时配对输出的。在实际使用中需要调整MeasurePos函数的参数满足测试需求,核心的是一个阈值和一个模糊化因子。[/align]
相关文章推荐
- c#语言
- Linux命令-查看进程命令:pstree
- Objective-C 深拷贝与浅拷贝
- Complete The Pattern #2
- 斯坦福大学UFLDL教程列表
- Failed to locate the winutils binary in the hadoop binary path
- 2014 软件测试发展汇总与展望
- python3爬虫
- UITextView+Button
- GIT 提交流程
- [转载]磁盘概念 (2011-09-20 10:00:54)
- leetcode summary-ranges
- 堆栈帧及其布局
- C语言函数指针调用函数
- 黑马程序员——java基础---关键字、常量、变量、运算符
- APIO 2015
- java学习日记
- linux程序设计——进程和信号(第十一章)
- 【无中生有】---14---用户行为监控系统嵌入
- 对于阶梯博弈的理解。