有很多学员有疑惑:我们不是一直学labview,为什么突然变成了c#+halcon?其实大家不必疑惑,工业视觉涉及的领域和软件很广,我们多了解一些不同的算法平台,将来有一天说不定能用得上,最终目标都是用labview这个平台来进行调用。

目前已知的labview调用第三方平台的方式有:1.调用exe,2,调用dll库(c++),3.调用.net库,4.调用ActiveX控件,5调用 windows api (.net)。

他山之石,可以攻玉。对于我们工业视觉领域,能用得上的地方有:labview  .net调用halcon,labview通过c++封装库dll后调用dll,labview通过c#封装类库后调用dll(例如激光打标行业中金橙子打标软件labview二次开发),labview调用c#版的opencv做计算机视觉,labview调用tensorflow或caffe封装后的库做深度学习。

因此学会不同的库的使用,对将来突破你的编程瓶颈有极大的帮助。

下面开始halcon的编程:

1.新建相关变量

HObject himage, ho_ModelContours, ho_TransContours;

HTuple hv_Width, hv_Height;

HTuple hv_HomMat2D, modelID;

HTuple hv_Row1, hv_Column1, hv_Row2,  hv_Column2, hv_RefRow, hv_RefColumn;

HTuple hv_Row, hv_Column, hv_Angle, hv_Score, hv_I;

2.打开图片

openFileDialog1.Filter = "JPEG文件|*.jpg|BMP文件|*.bmp|png文件|*.png";//过滤文件格式

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

HOperatorSet.ReadImage(out himage, (HTuple)openFileDialog1.FileName);

HOperatorSet.GetImageSize(himage, out hv_Width, out hv_Height);//获取图像尺寸

HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, hv_Height - 1, hv_Width - 1);//设置显示控件尺寸

HOperatorSet.DispObj(himage, hWindowControl1.HalconWindow);

}

3.加载并显示模板

openFileDialog2.Filter = "形状匹配模板文件|*.shm";//过滤文件格式

if (openFileDialog2.ShowDialog() == DialogResult.OK)

{

HOperatorSet.ReadShapeModel((HTuple)openFileDialog2.FileName, out modelID);

HOperatorSet.GetShapeModelContours(out ho_ModelContours, modelID, 1);

//HOperatorSet.GetImageSize(ho_ModelContours, out hv_Width, out hv_Height);//获取图像尺寸

//HOperatorSet.SetPart(hWindowControl2.HalconWindow, 0, 0, hv_Height - 1, hv_Width - 1);//设置显示控件尺寸

HOperatorSet.SmallestRectangle1Xld(ho_ModelContours, out hv_Row1, out hv_Column1,out hv_Row2,

out hv_Column2);

hv_RefRow = ((hv_Row2.TupleMax()) - (hv_Row1.TupleMin())) / 2;

hv_RefColumn = ((hv_Column2.TupleMax()) - (hv_Column1.TupleMin())) / 2;

HOperatorSet.VectorAngleToRigid(0, 0, 0, hv_RefRow, hv_RefColumn, 0, out hv_HomMat2D);

HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_TransContours, hv_HomMat2D);

HOperatorSet.SetColor(hWindowControl2.HalconWindow, "green");

HOperatorSet.DispObj(ho_TransContours, hWindowControl2.HalconWindow);

}

4.匹配并显示结果

HOperatorSet.FindShapeModel(himage, modelID, (new HTuple(0)).TupleRad()

, (new HTuple(360)).TupleRad(), 0.5, 1, 0.5, "least_squares", (new HTuple(4)).TupleConcat(

1), 0.75, out hv_Row, out hv_Column, out hv_Angle, out hv_Score);

for (hv_I = 0; (int)hv_I <= (int)((new HTuple(hv_Score.TupleLength())) - 1); hv_I = (int)hv_I + 1)

{

HOperatorSet.HomMat2dIdentity(out hv_HomMat2D);

{

HTuple ExpTmpOutVar_0;

HOperatorSet.HomMat2dRotate(hv_HomMat2D, hv_Angle.TupleSelect(hv_I), 0, 0,

out ExpTmpOutVar_0);

hv_HomMat2D.Dispose();

hv_HomMat2D = ExpTmpOutVar_0;

}

{

HTuple ExpTmpOutVar_0;

HOperatorSet.HomMat2dTranslate(hv_HomMat2D, hv_Row.TupleSelect(hv_I), hv_Column.TupleSelect(

hv_I), out ExpTmpOutVar_0);

hv_HomMat2D.Dispose();

hv_HomMat2D = ExpTmpOutVar_0;

}

ho_TransContours.Dispose();

HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_TransContours,

hv_HomMat2D);

HOperatorSet.SetColor(hWindowControl1.HalconWindow, "green");

HOperatorSet.DispObj(ho_TransContours, hWindowControl1.HalconWindow);

}

龙哥手把手教您LabVIEW视觉设计课程火热上线!!详情可点击下方链接进行查看:http://t.elecfans.com/c801.html

c#+halcon1.2 实现形状匹配相关推荐

  1. halcon 形状匹配

    halcon 形状匹配 1.例子 指定模板图像区域(也可以用draw_rectangle1画一个矩形) Row1 := 188 Column1 := 182 Row2 := 298 Column2 : ...

  2. 2021-01-10 Halcon初学者知识 【9】形状匹配【一】准备图像

    Halcon初学者知识 [9]形状匹配[一]准备图像 以下实验实现基于形状的模板匹配.如何制作图片? 在做图片实验的时候,常常需要按照目的制造不同的图像:在实现图像模板匹配识别过程中,首先通过halc ...

  3. HALCON基于形状匹配详解

    HALCON基于形状的模板匹配详细说明 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状 ...

  4. 不规则物体形状匹配综述

    不规则物体形状匹配综述 物体识别是计算机视觉应用的一项基本任务.识别通常基于目标物体的灰度信息.颜色信息或形状信息.物体识别的目的就是要找到一个包含可以区分不同目标物体的有效信息的描述.由于要识别的物 ...

  5. OpenCV计算机图像处理 —— 凸性缺陷 + 点多边形测试 + 形状匹配 + 轮廓分层与cv.findContours()

    OpenCV计算机图像处理 -- 凸性缺陷 + 点多边形测试 + 形状匹配 + 轮廓分层与cv.findContours() 目录 OpenCV计算机图像处理 -- 凸性缺陷 + 点多边形测试 + 形 ...

  6. 基于形状匹配的螺丝识别(完整代码)

    文章目录 前言 一.算法设计 1.1改进一 1.2改进二 二.完整代码 总结 前言 物品的分拣是许多工业生产线必不可少的部分.最初的物品分拣工作由人工完成,分拣效率低,需要消耗大量的人力,对工人的安全 ...

  7. [OpenCV实战]10 使用Hu矩进行形状匹配

    目录 1 什么是图像矩? 2 如何计算图像矩 2.1 质心获取 2.2 中心矩 2.3 Hu矩 3 基于Hu矩实现形状匹配 3.1 Hu矩的计算 3.2 基于matchShapes函数计算两个图形之间 ...

  8. [附下载]功能最强、高效易用的AI自动标注软件免费用了,兼容LabelImg格式xml,支持各种yolo、ssd、rcnn已训练模型以及OCR、形状匹配、轮廓匹配等各种定位方式来自动生成标注文件

    你将收获 掌握自动标注软件在Windows下系统配置方法 掌握利用灵活搜索来自动生成标注文件的方法 掌握利用训练好的网络模型来自动生成标注文件的方法 掌握利用OCR文字识别来自动生成标注文件的方法 适 ...

  9. Opencv:基于Hu-moments(hu矩)的形状匹配

    本文将按照以下目录展开介绍: 什么是图像矩: 如何计算图像矩: 什么是Hu矩: 如何利用Opencv计算一个图像Hu矩: 如何利用Hu-矩来寻找两个形状的相似性: 1. 什么是图像力矩 图像矩是图像像 ...

最新文章

  1. 【微软亚洲研究院MSRA】招聘多模态方向算法实习生
  2. 分布式全局序列号生产,Twitter Snowflake算法,雪花算法
  3. 资源推荐 | 知识图谱顶会文献集锦(附链接)
  4. python获取数据库的存储过程_python远程调用sqlserver存储过程记录
  5. 使用CSS预处理器Less
  6. 竞赛发布|100万奖金寻DT时代“最强大脑”!
  7. 关于多线程编程您不知道的 5 件事 有关高性能线程处理的微妙之处
  8. linux之创建大文件
  9. linux之curl使用技巧
  10. 2014年国内最热门的.NET开源项目TOP25
  11. Unity VideoPlayer视频播放器
  12. 计算机软件考试大纲,求计算机软件资格考试大纲和复习资料
  13. web网页播放音频文件
  14. xp重启计算机的快捷键,重启电脑的快捷键是什么?
  15. 《智豆SOW白皮书》重磅发布 附全文
  16. Outlook添加新浪邮箱时的配置细节——登录密码
  17. 分解uber依赖注入库dig-使用篇
  18. 怎样将excel表格导入天正_怎样把excel表格转换成cad读取
  19. Springboot错误页面和错误信息定制
  20. java中的反射和Class类

热门文章

  1. Mysql redo log 漫游
  2. 2计算机一级考试,全国计算机等级考试一级考试练习题(二)
  3. python:素数伴侣
  4. 设计模式-创建者模式
  5. 特发性震颤手抖怎么治
  6. VMware中win10安装谷歌浏览器显示空白异常解决
  7. js的输入输出的相关操作说明举例
  8. torch.device
  9. AssetBundle.CreateFromFile的有趣事情
  10. Xshell 7下载和XFTP 7下载