netMarketing视觉例子:shape模板匹配


下面是标准位置的图片,使用使用它创建了一个shape model,名字为:Matching 02.shm

image.png


下图是需要做模板匹配,摆正姿式的图片。

image.png


下图是模板匹配后,再使用仿射运算后旋转到正确位置的图像。

image.png


源代码:

 //find_shape_model
 var  winHandle = win.HalconWindow;
 var ModelId=halcon.read_shape_model(@"C:\Users\Administrator\Desktop\halcon例子\Matching 02.shm");
           
 var ModelContours=halcon.get_shape_model_contours(ModelId, 1);

 var Image1=halcon.read_image(@"C:\Users\Administrator\Desktop\halcon例子\边到圆心距离3.bmp");
 var res1=halcon.get_image_size(Image1);
 halcon.set_part(winHandle, 0, 0,res1.height, res1.width);
 halcon.dev_display(Image1, winHandle);

 (HTuple ModelRow, HTuple ModelColumn, HTuple ModelAngle, HTuple ModelScore) = halcon.find_shape_model(Image1, ModelId, halcon.rad(0), halcon.rad(360),
                0.5, 1, 0.5, vFunBaseMethod.findssModelSubPixelEnum.least_squares, new int[]{ 8}, 0.75);
 if (ModelScore.TupleLength() == 0)
 {
     MessageBox.Show("No Object");
     Image1.Dispose(); ModelContours.Dispose();
     return;
 }
 else if (ModelScore.TupleLength() != 1)
 {
     MessageBox.Show("Not only one object");
     Image1.Dispose(); ModelContours.Dispose();
     return;
 }
 else
 {
     for (int i = 0; i < ModelScore.TupleLength(); i++)
     {
         ShowAlarm.Delay(2000);
         var RectificationRow = 1043;
         var RectificationCol= 1105;
         var HomMat=halcon.hom_mat2d_identity();
         var HomMat2DTranslate=halcon.hom_mat2d_translate(HomMat, (int)(RectificationRow - ModelRow.D),
             (int)(RectificationCol - ModelColumn.D));
          HomMat = halcon.hom_mat2d_rotate(HomMat, -ModelAngle.TupleSelect(i).D, RectificationRow, RectificationCol);
          var ImageAffinTrans=halcon.affine_trans_image(Image1, HomMat, vFunBaseMethod.atImageInterpolationEnum.constant, false);
          halcon.dev_display(ImageAffinTrans, winHandle);
          ImageAffinTrans.Dispose();
     }
 }
 Image1.Dispose();
 ModelContours.Dispose();


基于netMarketing的视觉例程的说明:

  • netMarketing是一个综合类库,其视觉部分的功能基于halcon,作者开发时的halcon版本为10

  • 要运行上面的程序,建议使用C#7.0,即VS2017的C#,其新增加的Tuple语法糖可以简化调用类似halcon这种函数变态多的参数的情况,它会节省你大量编码时间。

  • 如果下载使用netMarketing? 请查阅这个链接: http://47.98.154.65/?id=202

  • netMarketing封装了自动化行业常用的视觉功能,以及包装了halcon的常用算子,以符合C#函数的调用习惯。事实上,你可以直接把halcon代码复制到C#中,简单修改一下即可使用(因为封装的函数名和halcon函数名是保持一致的!)。

  • 有些例程使用的素材是一些实际项目中的图片,因为尺寸较大,通常放于网盘供大家下载。

  • 有些例程及素材压缩包是有密码的,需要你打赏作者取密码。作者用所得款项维持建站费用。



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864