有很多学员有疑惑:我们不是一直学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. 提示和技巧:光线跟踪最佳实践
  2. HTML Inspector – 帮助你编写高质量的 HTML 代码
  3. Java集合—HashMap底层原理
  4. 使用pm2启动Node和Vue项目教程
  5. python 项目实战视频_腾讯视频 Python 爬虫项目实战
  6. 深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self
  7. 程序员6年换了8份工作,工资从4.5K涨到40K,网友问:谁敢要你?
  8. nodejs 安装express
  9. 原生js和jquery常用的DOM操作
  10. ES6小实验-复习字符串
  11. 软件评测师教程简介(第二篇-测试技术)
  12. 麻瓜python视频教程_Python基础教程|麻瓜编程Python Web开发工程师教程完整版_ - 极光下载站...
  13. C++ 调用 SWMM模型.swmm5.dll
  14. matlab计算abc三相短路电流_供配电系统设计需要用到的计算公式(结合手册简要总结)...
  15. 基于token的多平台身份认证架构设计
  16. 百色职称计算机,初级职称申请百色
  17. 英语单词测试词汇量的软件,英语单词词汇量测试小程序!简直不要太准
  18. sicily 4379 bicoloring
  19. php artisan command,从php函数运行artisan命令
  20. android openCV检测图像的基本特征,包括Canny边缘检测、Harris角点检测、霍夫直线检测-基于Android studio

热门文章

  1. 360°全景环视「升级战」激化,前装供应链洗牌加速进行
  2. 搞混两种检测:美国疾控中心怎么会犯这样的错?
  3. C语言字节对齐问题详解
  4. 游戏开发中可能用到的【6个等级】
  5. 600多家沿河化工公司际遇“生死门”
  6. freenas 蜗牛星际_蜗牛星际 篇三:蜗牛星际背板稳定性测试及后续思考(多图)
  7. C# 使用NAudio实现声音的录制(麦克风 , 扬声器)
  8. 《go语言圣经》习题答案-第9章
  9. 华为65英寸智慧屏面板用的哪家屏幕
  10. python 全局变量和局部变量的区别