halcon一维测量

halcon的一维测量核心步骤如下:
1.通过一个矩形ROI创建测量对象,他的ROI是一个Rect2矩形,将在这个矩形phi方向上测量。
2.调用单个尺寸测量或多个尺寸测量。
3.关闭测量对象。

代码如下:
void  TestProc1D( QWidget  * w )
{
                  QSize  size =  w  ->size();
                  HWindow  * display =  new  HWindow (0,0,size.width(),size.height(),(  HWND ) w  ->winId(), "" ,  "" );

                  HImage  image;
                image.ReadImage(  "F:/image/ic_pin.png" );
                  Hlong  width,height;
                image.GetImageSize(&width,&height);
                display->SetPart(0,0,height,width);
                display->DispImage(image);

                  double  row,col,phi,lenght1,lenght2;
                display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);

                  HMeasure  measure(row,col,phi,lenght1,lenght2,image.Width(),image.Height(), "nearest_neighbor" );
                  HTuple  rowEdge,colEdge,amps,distances;
                measure.MeasurePos(image,1,30,  "all" , "all"  ,&rowEdge,&colEdge,&amps,&distances);
                display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);

                  Hlong  n = distances.Length();
                  qDebug () <<  "count : "  << n;
                  for ( Hlong  i=0; i<n; i++)
                {
                                  qDebug () << distances[i].D() <<  ";" ;
                }

                  //display->DrawRectangle2(&row,&col,&phi,&lenght1,&lenght2);
                display->DrawPoint(&row,&col);
                measure.TranslateMeasure(row,col);

                measure.MeasurePos(image,1,30,  "all" , "all"  ,&rowEdge,&colEdge,&amps,&distances);
                display->DispLine(rowEdge,colEdge-lenght2,rowEdge,colEdge+lenght2);

                n = distances.Length();
                  qDebug () <<  "count : "  << n;
                  for ( Hlong  i=0; i<n; i++)
                {
                                  qDebug () << distances[i].D() <<  ";" ;
                }
}

这里核心调用了 MeasurePos这个函数,还有另外一个函数 MeasurePair这两个函数的功能相同,只是输出结果的形式不同, MeasurePair的数据时配对输出的。在实际使用中需要调整 MeasurePos函数的参数满足测试需求,核心的是一个阈值和一个模糊化因子。

猜你喜欢

转载自blog.csdn.net/wolfseek/article/details/46715075
今日推荐