《LabVIEW HALCON图像处理入门教程(24.09)》含深度学习,LabVIEW使用NI VISION+Halcon混合编程机器视觉与图像处理入门学习资料
《LabVIEW HALCON图像处理入门教程(24.09)》含深度学习,LabVIEW使用NI VISION+Halcon混合编程机器视觉与图像处理入门学习资料教程名称教程价格加密U盘成本定价有无运费(顺丰11元起,满千元包邮费)源代码价格
A、机器视觉实用教程(修订版)10080180有0
B、机器视觉实用教程-视频教程+附加案例200100300有0
C、NI Vision图像处理宝典(第二版)11080190有1000
D、NI Vision图像处理宝典-视频教程430100530有1000
E、NI Vision Assistant2020-2024图像处理入门教程41080490有0
F、NI Vision Assistant2024图像处理视频教程460100560有0
G、NI VBAI2020-2023入门教程42080500有0
H、NI VBAI 2023视频教程540100640有0
I、LabVIEW驱动相机采集图像指南(24.11)15080230有300
J、LabVIEW Vision函数实例详解2020-202452080600有300
K、LabVIEW HALCON图像处理入门教程(24.09)47080550有4000
两种9.75折,三种9.5折,四种9.25折,五种9折,六种8.75折,七种8.5折,八种8.25折,九种8折,十种7.75折,十一种7.5折(加密U盘只收了成本价格,不参与折扣;部分教程没有源代码,不参与折扣,如需要源代码在套餐基础上直接加价)。计算公式:
选择的教程价格求和×相应的折扣+需要的U盘成本=套餐价格。加密U盘成本:USB2的8GB80元,USB2的16GB100元,USB3的32GB200元,USB3的64GB的270元。套餐尽量使用一个U盘发货,PDF版本一个8GB;单个视频教程及配套的PDF,使用16GB;两个视频教程使用32GB,3个视频教程需要使用32+16两个U盘成本高于1个64G,直接使用1个64G;全套4个视频及PDF使用64GB一个U盘。
含硬件套餐,大恒相机为MER-133-54GM/MER-500-14GM为主,镜头为国产SHI-CxxFFW系列,焦距8-50mm随机选择,光源默认为环形光源SHI-RL7430-W或条形光源SHI-BL14738-W,光源电源默认为SHI-APS2424-2CH。
计价示例:选择C+J产品,C的单卖价格为110元,J的单卖价格为520元,两种的折扣是0.975,两种资料需要一个8G的U盘,80元,则总价为(520+110)*0.975+80=694元,需要源代码的加1300元。更多套餐参考:CJK三种中级版无代码:1125元;ABGH四种无编程基础套餐:1366元;ACJK四种视觉图像进阶无代码:1190元;BDFH 四种视频版无代码:1778元;ACEGIJK七种PDF版无代码:1933元;CDEFGHIJK九种软件教程无代码:3078元;ABCDEFGHIJ十种NI视觉环境无代码:2858元;ABCDEFGHIJK十一种全套无代码:3128元;ABCDEFGHIJK十一种全套有代码:9000元;NI视觉源代码:2500元;Halcon源代码4000;教程所有源代码:6500元;全套无代码+相机镜头:3600元;全套有代码+相机镜头:9600元;全套无代码+相机镜头光源电源:3900元;全套有代码+相机镜头光源电源:9800元。 更多套餐组合,请与客服联系。
价格为未税价格,含税价格小规模纳税人普票*1.01;一般纳税人专用发票*1.13。
交易方式:公对公或私对私,无电商平台交易方式。
快递费用:顺丰速运,东莞发货11元起,广东省内12~13元,其他省份18~25元不等。订单满1000元包邮费。
加密U盘质保:质保1年。无法使用,厂家优先远程支持;确认无法使用,七天内免费维修或换新盘,运费卖家承担;一年内的,免费维修或换新盘,运费双方承担;一年后出故障,可付费维修或换新盘,运费买方承担。
以下内容为旧版
L、NI标定训练接口程序2020~2024版(E、G中均已经包含,不参与套餐)50050无0
M、NI Calibration Training标定训练30030无0
N、LabVIEW Vision图像处理开发宝典(第一版)80080无0
O、NI VBAI2011入门教程(第一版)70070无0
P、NI VBAI2015F1入门教程(第二版)9080170有0
Q、NI VBAI2015F3视频教程26080340有0
R、机器视觉实用教程(第一版)80080无0
S、NI视觉助手2012图像处理教程2300230无0
T、NI视觉助手图像处理教程-实例10010无0
U、NI视觉助手2017图像处理教程-视频21080290有0
V、NI驱动相机采集图像指南9080170有200
《LabVIEW HALCON图像处理入门教程(24.09)》教程简介:
内容统计:1789页,字数30.8W+,配图3151张,word原始文档790MB。
定价策略:PDF1元/4页,共447元;视频10元/小时,只有简单介绍视频,无完整版视频教程,4小时多,计30元;加密U盘成本:80元。共计557元,定价550元。源代码另行收费,教程中所有源代码含12个示例4000元。价格不包含税费和运费。加密U盘发货,顺丰速运,快递费用11元起(东莞发货),广东省内12~13元;其他省份20~25元不等。
开发环境:LabVIEW2020SP1 32位+Halcon19.11 32位(K教程第3章之前的内容),LabVIEW2020SP1 64位+Halcon23.05 64位(K教程第4章之后的内容)
教程适用对象:使用NI视觉无法满足项目要求,需要更高性能、更快速度的图像处理算法。属于LabVIEW Vision的进阶教材,不适合于使用LabVIEW搞机器视觉图像处理开发的小白。如果完全未入门的,请先学习LabVIEW+NI Vision相关的知识。
教程销售规格:
PDF教程:仅包含《LabVIEW HALCON图像处理入门教程(24.09)》的PDF电子版教程(加密U盘发货)。550元。
PDF教程+例子源代码:包含《LabVIEW HALCON图像处理入门教程(24.09)》的PDF电子版教程(教程加密U盘发货);以及教程中涉及到的所有例子源代码(源代码使用邮件发送,不加密,可复制编辑修改)。4500元。
PDF教程+相机镜头:包含《LabVIEW HALCON图像处理入门教程(24.09)》的PDF电子版教程(加密U盘发货);以及适用于本教程的相机(以大恒图像的130万像素网口黑白相机MER-133-54GM为准)和常规的国产FA工业镜头(SHI-CxxFFW为主,12-50mm焦距可选,500万像素级别兼容2/3寸相机)。2000元。
PDF教程+例子源代码+相机镜头:包含《LabVIEW HALCON图像处理入门教程(24.09)》的PDF电子版教程(加密U盘发货);以及教程中涉及到的所有例子源代码(源代码使用邮件发送,不加密,可复制编辑修改);以及适用于本教程的相机(以大恒图像的130万像素网口黑白相机MER-133-54GM为准)和常规的国产FA工业镜头(SHI-CxxFFW为主,8-50mm焦距可选,500万像素级别兼容2/3寸相机)。5500元。
本系列教程均为PDF电子书或视频,无纸质书,使用防复制加密U盘发送,U盘可在安装主流Windows XP、7、8、10的系统电脑中使用,教程资料不可打印,不可编辑,不可复制出U盘;源代码使用网盘发货,可复制修改编辑。U盘质保1年。质保期内损坏无法读取文档,免费维修或更换,运费双方承担;质保期外损坏,补偿U盘成本费(8GB80元,16GB100元)可换新,运费买家承担。U盘遗失不补,请注意保管!
默认发顺丰快递,订单超1000元,包邮。
售后技术支持服务,从2018年7月起,本店所有教程、方案、源代码等,将不再提供有偿技术支持服务。
《LabVIEW HALCON图像处理入门教程(24.09)》
前71页试读版本下载:
通过网盘分享的文件:LabVIEW HALCON图像处理入门教程 - 24.09试读版.pdf
链接: https://pan.baidu.com/s/1SyuXjtee7gjpQLBkXT5PSw 提取码: 6sbf
目录
版权声明 6
读者利益 7
感谢 7
前言 8
版本迭代 9
前置条件 10
开发环境 10
第1章 Halcon中打开采集获取图像 12
1.1 打开图像和显示图像 12
1.1.1 HDevelop中打开图像 12
1.1.2 LabVIEW中使用Halcon打开图像&Halcon显示图像 18
1.1.2.1 HWindowControl/HSmartWindowControl显示图像窗口控件 19
1.1.2.1.1 .NET窗口插入Halcon图像显示窗口 19
1.1.2.1.2 HalconDotHet.HHandleBase的类型初始值设定项引发异常 23
1.1.2.1.3 HSmartWindowControl控件的属性 26
1.1.2.1.4 HSmartWindowControl控件的方法 37
1.1.2.2 ReadImage读取图像 40
1.1.2.3 错误:Halcon error #1305/未将对象引用设置到对象的实例 66
1.1.3 LabVIEW中使用NI Vision打开图像&Halcon显示图像 68
1.1.3.1 LabVIEW库Max函数 70
1.1.3.2 调用代码接口节点CIN 80
1.1.3.3 ArrayMemInfo数组内存信息 98
1.1.3.4 LabVIEW库DSNewPClr和MoveBlock函数 105
1.1.3.5 IMAQ GetImagePixelPtr+Move Block方法 115
1.1.4 LabVIEW中使用Halcon打开图像&LabVIEW显示图像 121
1.2 从相机采集图像 134
1.2.1 HDevelop中从相机采集图像 135
1.2.2 LabVIEW中使用Halcon采集图像和显示图像 155
1.2.2.1 打开OpenFramegrabber 156
1.2.2.2 抓取图像GrabImage(Dispose内存释放算子解决内存溢出) 162
1.2.2.3 关闭CloseFramegrabber/关闭所有CloseAllFramegrabber 175
1.2.2.4 LabVIEW类方式处理Halcon函数 177
1.2.2.5 Halcon算子的子VI处理方式 184
1.2.2.6 Halcon算子的状态机处理方式 191
1.2.2.7 获取相机参数GetFramegrabberParam 230
1.2.2.8 设置相机参数SetFramegrabberParam 243
1.2.2.9 彩色相机的白平衡 249
1.2.2.10 GrabImage同步与GrabImageAsync异步抓图速度比较 260
1.2.3 LabVIEW中使用NI-IMAQdx采集图像使用Halcon显示图像 265
1.2.4 VDM to Halcon Image.vi将VDM图像转为Halcon图像32&64位环境自适应 298
第2章 Halcon中关于图像的一些基本操作 312
2.1 获取图像信息 312
2.2 图像类型的转换 316
2.3 彩色图像转换为灰度图像 324
2.4 RGB彩色图像转HLS彩色图像 334
2.5 通过饱和度调整图像的鲜艳度 336
2.6 获取鼠标点击位置的坐标 339
2.7 实时获取鼠标移动位置的坐标 343
2.8 获取鼠标位置的像素值 366
2.9 图像缩放 384
2.9.1 1:1原始尺寸 387
2.9.2 平移图像 391
2.9.3 适合窗口 404
2.9.4 缩放图像 420
2.10 覆盖Overlay 433
2.11 ROI兴趣区域 438
第3章 LabVIEW Halcon图像处理实例 460
3.1 圆直径测量 461
3.1.1 NI Vision找圆与Halcon找圆比较 461
3.1.2 LabVIEW Image中设置ROI测量兴趣区域 471
3.1.3 Halcon HImage中设置ROI测量兴趣区域 500
3.2 Barcode一维条码读取 505
3.2.1 NI Vision与Halcon读取一维码效果对比 505
3.2.2 Halcon中读取一维码 507
3.2.3 LabVIEW实例集成 531
3.2.3.1 Barcode_OP.vi状态机开发 531
3.2.3.2 Barcode_OP.vi状态机集成到实例程序框架 537
3.2.3.3 微小内存增加溢出调试 549
3.3 二维码读取 583
3.3.1 二维码_OP.vi状态机开发 585
3.3.2 二维码_OP.vi状态机集成到实例程序框架 593
3.4 形状匹配 610
3.4.1 Halcon形状匹配介绍 610
3.4.2 HDevelop环境中形状匹配例子 611
3.4.3 形状匹配_OP.vi状态机开发 614
3.4.3.1 创建 615
3.4.3.2 参数 628
3.4.3.3 查找 629
3.4.3.4 读取 634
3.4.3.5 保存 635
3.4.3.6 关闭 636
3.4.4 形状匹配_OP.vi状态机集成到实例程序框架 636
3.4.5 Halcon匹配与NI视觉匹配性能比较 695
3.5 字符识别 700
3.5.1 HDevelop中的OCR 701
3.5.2 字符识别_OP.vi状态机开发 721
3.5.3 字符识别_OP.vi状态机集成到实例程序框架 746
3.6 提取线及线宽测量 771
3.6.1 NI Vision中的找线条、测线宽的求解思路 772
3.6.2 Halcon中的找线、求线宽方法示例 777
3.6.3 LabVIEW调用hdev程序来简单演示Halcon例子 779
3.6.4 lines_gauss.hdev程序解释 797
3.6.5 提取线_OP.vi状态机开发 802
3.6.6 提取线_OP.vi状态机集成到实例程序框架 813
3.6.7 LabVIEW调用hdvp外部函数 822
3.6.8 获取线宽角度等轮廓属性 850
3.6.9 查找线条的一些细节研究 864
3.6.10 规格判断 898
3.6.11 自动运行 905
3.6.12 内存溢出问题处理 926
3.6.13 X型、T型、L型、O形、S型线条的查找 952
3.7 基于线颜色的线序检测 965
3.7.1 NI Vision中线序检测思路 965
3.7.2 Halcon中的线颜色、求线宽示例 967
3.7.3 lines_color.hdev程序解释 968
3.7.4 线颜色OP.vi状态机开发 971
3.7.5 线颜色OP.vi状态机集成到实例程序框架 976
3.7.6 线序颜色检测效果验证 992
3.8 基于差异模型的缺陷检测(多图训练差异模型) 1013
3.8.1 NI Vision中的差异缺陷检测思路 1014
3.8.2 Halcon中差异缺陷检测思路 1030
3.8.3 print_check.hdev程序解释 1033
3.8.4 缺陷检测OP.vi状态机开发 1048
3.8.4.1 元组.llb 1048
3.8.4.2 Threshold阈值.vi 1064
3.8.4.3 FillUp填充.vi 1070
3.8.4.4 Difference差.vi 1073
3.8.4.5 ShapeTrans形状变换.vi 1075
3.8.4.6 DilationCircle圆膨胀.vi 1088
3.8.4.7 ReduceDomain缩小域.vi 1091
3.8.4.8 InspectShapeModel检查形状模型.vi 1093
3.8.4.9 GenContoursSkeletonXLD生成骨架XLD轮廓.vi 1096
3.8.4.10 AreaCenter面积中心.vi 1102
3.8.4.11 Connection连接.vi 1107
3.8.4.12 CreateShapeModel创建形状模型.vi 1109
3.8.4.13 CreateVariationModel创建差异模型.vi 1111
3.8.4.14 ReadImage读取图像.vi 1115
3.8.4.15 FindShapeModel查找形状模型 1115
3.8.4.16 VectorAngleToRigid向量角至刚性 1123
3.8.4.17 AffineTransImage仿射变换图像.vi 1126
3.8.4.18 TrainVariationModel训练差异模型 1134
3.8.4.19 GetVariationModel获取差异模型.vi 1137
3.8.4.20 PrepareVariationModel准备差异模型.vi 1141
3.8.4.21 GetThreshImagesVariationModel获取差异模型阈值图像.vi 1144
3.8.4.22 ErosionRectangle1矩形腐蚀.vi 1149
3.8.4.23 CompareVariationModel比较差异模型.vi 1153
3.8.4.24 SelectShape选择形状.vi 1159
3.8.4.25 CountObj统计目标.vi 1163
3.8.4.26 GenContourRegionXLD生成区域XLD轮廓.vi 1164
3.8.4.27 ConcatObj连接目标.vi 1166
3.8.4.28 WriteVariationModel保存差异模型.vi 1170
3.8.4.29 ReadVatiationModel读取差异模型.vi 1173
3.8.4.30 ClearShapleMode清除形状模型.vi 1178
3.8.4.31 ClearVariationModel清除差异模型.vi 1179
3.8.5 缺陷检测OP.vi集成到实例程序框架 1181
3.8.5.1 缺陷检测OP.vi-获取图像 1182
3.8.5.2 缺陷检测OP.vi-新建模型 1185
3.8.5.3 缺陷检测OP.vi-创建模板 1186
3.8.5.4 缺陷检测OP.vi-读取模型 1186
3.8.5.5 缺陷检测OP.vi-训练模型 1187
3.8.5.6 缺陷检测OP.vi-准备模型 1188
3.8.5.7 缺陷检测OP.vi-比较模型 1188
3.8.5.8 缺陷检测OP.vi-保存模型 1189
3.8.5.9 缺陷检测OP.vi-释放关闭 1189
3.8.5.10 缺陷检测OP.vi集成到实例程序框图 1190
3.8.5.11 缺陷检测OP.vi集成后官方图片运行效果 1201
3.8.6 内存溢出问题 1212
3.8.7 实际产品测试 1219
3.9 基于差异模型的缺陷检测(外部函数单图得到差异模型) 1232
3.9.1 variation_model_illumination.hdev程序解释 1233
3.9.2 get_model_region本地函数转GetModelRegion外部函数 1240
3.9.3 调用GetModelRegion外部函数示例 1258
3.9.4 CreateScaledShapeModel创建比例形状模型.vi 1261
3.9.5 GetShapeModelContours获取形状模型轮廓.vi 1264
3.9.6 HomMat2dIdentity相同二维齐次矩阵.vi 1264
3.9.7 HomMat2dTranslate平移二维齐次矩阵.vi 1266
3.9.8 AffineTransContourXld仿射变换XLD轮廓.vi 1267
3.9.9 SobelAmp索贝尔振幅.vi 1268
3.9.10 PrepareDirectVariationModel准备直接差异模型.vi 1270
3.9.11 get_grayval_range本地函数转GetGrayvalRange外部函数 1272
3.9.12 inspect_cap本地函数转InspectCap外部函数 1275
3.9.13 缺陷检测OP.vi状态机开发 1283
3.9.14 缺陷检测OP.vi集成到实例程序框架 1285
3.9.14 修正获取模型区域/获取灰度值范围/检查瓶盖_比较/检查瓶盖_缺陷等调用外部函数 1291
3.9.15 修正缺陷检测OP.vi 1299
3.9.16 修正HWindow_OP.vi 1301
3.9.17 图像处理.vi 1303
3.9.18 修正缺陷检测OP.vi集成到实例程序框图 1304
3.9.19 官方示例演示效果 1309
3.9.20 实际产品测试 1317
第4章 LabVIEW Halcon深度学习实例 1325
4.1 基于深度学习的字符识别Deep OCR(64位Halcon 23.05) 1326
4.1.1 Halcon深度学习简介 1326
4.1.2 Halcon官方Deep OCR实例介绍 1328
4.1.2.1 deep_ocr_workflow Part 1:图像中单词的检测和识别 1328
4.1.2.2 deep_ocr_workflow Part 2:仅识别单词 1335
4.1.2.3 deep_ocr_workflow Part 3:仅检测单词 1341
4.1.2.4 deep_ocr_workflow Part 4:使用自动切分对大图像进行检测和识别 1343
4.1.3 LabVIEW中Deep OCR的简单实现验证 1349
4.1.4 Deep OCR.vi状态机开发 1388
4.1.4.1 参数控件 1389
4.1.4.2 前面板和接线端 1395
4.1.4.3 创建模型 1395
4.1.4.4 获取参数 1396
4.1.4.5 设置参数 1404
4.1.4.6 应用模型 1405
4.1.4.7 关闭模型 1412
4.1.5 DeepOCR.vi状态机集成到实例程序框架 1414
4.1.5.1 状态机集成到实例程序 1414
4.1.5.2 实例程序运行效果 1433
4.1.5.3 一些参数的测试验证 1445
4.1.5.4 CPU和内存资源占用 1479
4.1.6 hdl预训练模型和hdo专用模型 1483
4.1.6.1 .hdl预训练模型 1483
4.1.6.2 Deep OCR.vi状态机中增加读取模型 1486
4.1.6.3 Deep OCR.vi状态机中增加保存模型 1489
4.1.6.4 读取.hdo深度OCR专用模型 1496
4.1.6.5 使用.hdo模型对官方图像测试验证 1510
4.1.7 CUDA和cuDNN环境安装配置 1522
4.1.8 安装CUDA后使用GPU验证深度OCR 1544
4.1.9 DLT深度学习工具安装 1550
4.1.10 DLT标注数据集 1558
4.1.11 使用官方示例训练模型 1578
4.2 基于深度学习的(多个)模板匹配Deep Counting 1642
4.2.1 深度计数环境介绍 1642
4.2.2 deep_counting_workflow.hdev代码解释 1648
4.2.3 Deep Counting.vi状态机开发 1653
4.2.3.1 参数控件 1654
4.2.3.2 前面板和接线端 1655
4.2.3.3 创建模型 1656
4.2.3.4 读取模型 1658
4.2.3.5 获取参数 1659
4.2.3.6 设置参数 1663
4.2.3.7 准备模型 1663
4.2.3.8 应用模型 1667
4.2.3.9 保存模型 1671
4.2.3.10 关闭模型 1672
4.2.3.11 简易实例状态机功能验证 1673
4.2.3.12 最小分数、最大重叠无需准备的参数验证 1691
4.2.3.13 其他需要准备的参数验证 1692
4.2.3.14 状态机优化 1693
4.2.4 DeepCounting.vi状态机集成到实例程序框架 1698
4.2.5 深度计数模板匹配效果验证 1723
4.2.5.1 最小分数测试 1725
4.2.5.2 比例参数测试 1728
4.2.5.3 角度参数测试 1737
4.2.5.4 角度参数、比例参数同时作用 1750
4.2.6 多个模板匹配效果验证 1752
4.2.7 自动运行效果 1756
4.2.8 自动运行时内存溢出测试 1759
4.2.9 官方实例图像测试 1764
4.2.10 深度计数的实际应用 1779
结束语 1787
版权声明
尊敬的读者,当您看到本页时,表示您已经获得了《LabVIEW HALCON图像处理入门教程》的相关版本(PDF电子书等形式)。无论您从何渠道获得本作品,您仅可将其用于自己的学习。《LabVIEW HALCON图像处理入门教程》作品的所有权利(发表权、署名权、修改权、保护作品完整权、复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权及其他权利)归作者石鑫华所有,未经作者同意,您无权将《LabVIEW HALCON图像处理入门教程》用于出版、发行、复制、印刷、信息网络传播、摄制、改编、汇编等等侵权行为。为了维护作者的权益,分发给您的复本是加密的PDF文档,无法打印、复制、编辑等,其中的图片也有可能包含与您相关的水印,敬请谅解!本作品已登记著作权,侵权必究。
《LabVIEW HALCON图像处理入门教程》作品登记证书
读者利益
亲爱的读者同志,当您通过正规渠道获得《LabVIEW HALCON图像处理入门教程》的复本时,表示您遵守了相关的法律法规。同时也表示了您对知识产权的承认以及对本书作者的尊重。买这本书的钱,对于做视觉的您来说,可能不足一个项目利润的十分之一。当然,对于作者来说,需要这类专业书籍的人也屈指可数,多卖一本少卖一本也发不了财。因此,如果您对本书有兴趣,请不要再跟作者讨价还价。您不是在菜市场买菜,您买的是一份可以有更高回报的经验分享。
为了提升正版阅读体验,在您购买本书时,可在作者网站visionbbs.com视觉论坛中注册相关ID,并通知作者,作者将为您提高相应的权限,以查看、下载论坛有积分限制的阅读内容(需要付费的内容除外)。您通过视觉论坛visionbbs.com可以了解到,作者在机器视觉行业还算有较丰富的应用经验,对于初学者或者是对机器视觉了解不深的工程师,视觉论坛也许可以提供一些必要的帮助,让您可以少走许多弯路,更快的掌握知识,更高效的完成您的机器视觉项目。
感谢
首先,感谢您支持作者。您是上帝,您的支持就是作者前进的动力。因此要特别感谢。
其次,感谢NI。因为NI为我们提供了LabVIEW这么好的图像处理开发软件,可以非常快的设计验证视觉项目,了解机器视觉与图像处理。
第三,感谢MVTec。其出口的Halcon性能强大速度快,是图像处理领域中的佼佼者。
第四,感谢MV。没有MV,我们大家也不会走进机器视觉和图像处理这个圈子。因此我们大家都要感谢MV。
前言
从作者多年的使用经验以及机器视觉行业内同行反馈来看,NI Vision有些功能的性能还是比较欠缺的,如一维码/二维码的读取、字符识别、几何匹配等。在这些场景下的项目,可能图像质量差一点,就无法读取或识别了。但是同样的硬件条件得到的同样图片,在Halcon中则可以轻松处理。因此,有些项目要想得到稳定的效果,还是要切换到Halcon的库中进行处理。
Halcon本身的介绍,本教程就不详细介绍了,网上的介绍资料很多,可自行搜索了解。Halcon的图像处理库,可以说是目前商业领域比较强大的图像处理软件。但是因为其主要是针对文本编程环境的,所以大部分的教程、资料等,都是面向C++/C#/.NET/VB之类的文本编程语言。当然,也有一些简单的介绍LabVIEW的,不过都不全面,只是几个简单的使用,相互转来转去的。
创作本教程的初衷,是出于对NI Vision的性能不足,从而转换调用Halcon库来做核心的图像处理,将介绍LabVIEW与Halcon联合开发一些图像处理程序的方法和步骤。因为作者也没有太多Halcon开发的经验,所以只是简单介绍一些Halcon的基本操作以及有限的几个示例,以求打通LabVIEW与Halcon联合开发的壁垒。更多偏向于和作者一起学习,掌握 LabVIEW调用Halcon开发图像处理程序的方法和步骤。对于Halcon中大量的库函数的介绍以及实际项目的实现,本教程则无法满足这个要求。市面上也有一些Halcon方面的作者,创作了相关的教程,可以参考相应的教程。就算法本身来说,用法大概是相通的,只要会了一些LabVIEW中Halcon算子的调用与开发,入门了,那其它函数也是相同的使用方法,再尝试其它的项目也就容易了。
LabVIEW调用Halcon,主要的方式有两种。一种是使用HDevelop集成开发环境开发好相应的脚本程序,测试测量的函数算法、参数设置等,均在此脚本里。然后使用LabVIEW直接调用这些脚本即可完成任务。HDevelop集成开发环境,有点类似于NI VBAI,使用VBAI编写好脚本,也是可以在LabVIEW中调用脚本的。这种方法的好处是,LabVIEW调用简单,通常通过调用hdevenginedotnet.dll动态库;不足之处则是处理过程中使用的算子无法在LabVIEW中调整,必须要借助HDevelop集成环境,而且要安装Halcon;另外调用脚本函数,也分为本地函数hdev和外部函数hdvp两种方法。本地函数调用简单一些,但是这种方法不能设置参数。而外部函数调用复杂一些,但是可以设置参数。所以,如果要在LabVIEW中使用,则需要调用外部函数。
另一种方法,则是利用LabVIEW中的.NET函数节点调用Halcon的DLL中对.NET的编程接口。这种方法的好处是,可以调用所有Halcon中的函数,选择需要的测试测量步骤,并且可以自由的增减算子调用,在LabVIEW平台中编程灵活度要大的多。这种方法主要调用的是halcondotnet.dll这个动态链接库,所以只需要有可正常运行的halcondotnet.dll文件即可(如正版的或你懂的版),可以不需要安装Halcon即可进行图像处理程序的开发。也不需要再学习HDevelop集成开发环境。当然,对于初学者,可能还是要安装好Halcon,能会HDevelop集成开发环境更理想,因为有些图像处理实现的过程方法,调用的函数,参数的设置,还是需要在此环境中验证的,直接在DLL中调用,因为函数实在太多,有时也会摸不着头脑。这也是这种方法的缺点,就是需要开发者对Halcon的函数有一定的了解,知道常规的图像处理需要使用什么函数、参数的大概范围与意义,否则就需要查询Halcon的开发手册中相关函数的参数意义与使用方法。不过这种要求,即使NI Vision初学者,也是需要查看开发手册查看函数的参数与使用方法,演示例子之类的。对于老司机,那当然就不算什么缺点了。对于本教程,主要介绍的是后面一种方法,即调用halcondotnet.dll文件来完成图像处理的任务(主要是使用这个库文件,如果要使用Halcon驱动相机采集图像,还需要相机驱动文件,这个在后面介绍要用到时再介绍)。而调用HDevelop脚本的方法,本教程的第一版没有介绍;第二版中有涉及到本地函数hdev和hdvp外部过程的调用方法介绍,并加了一些实例进行介绍。
《LabVIEW HALCON图像处理入门教程》中示例源代码在创作时,花费了不少时间与精力,因此不作为教程的免费资源提供,如需要源代码,可付费购买。
《LabVIEW HALCON图像处理入门教程》主要面向使用LabVIEW调用NI Vision的软件工程师,介绍LabVIEW环境中调用NI Vision库与Halcon库混合编程的方法,属于入门级教材。如果您已经能使用LabVIEW + Halcon玩出花来了,那么本教程不是很适合,会觉得太过简单。而如果您还没有学会LabVIEW + NI Vision的图像处理软件的开发,则会觉得本教程讲的乱七八糟,教程中的有关NI Vision的一些函数、概念莫名其妙、不明所以。
版本迭代
《LabVIEW HALCON图像处理入门教程》首版完成于2022年1月,也就是目录“3.5 字符识别”章节之前的内容,只有700页左右。
《LabVIEW HALCON图像处理入门教程(第二版)》,增加了“3.6 提取线及线宽测量”~“3.9 基于差异模型的缺陷检测(外部函数单图得到差异模型)”,完成于2023年6月份,主要是增加了4个实例,介绍了一些实用的例子,以及一些LabVIEW调用Halcon的优化方法,如“3.6.3 LabVIEW调用hdev程序来简单演示Halcon例子”、“3.6.7 LabVIEW调用hdvp外部函数”,通过这些方法则可以不需要每个函数都通过.NET来调用。因为HDevlop中的有些函数,通过.NET是无法调用的,所以只能使用hdev或hdvp来调用。本版本完成时,教程内容有1300多页。
LabVIEW调用Halcon可完成的内容确实比较多,本教程也会不间断的更新。从2024年7月开始,仿照LabVIEW的版本迭代方式,教程的版本号改为年代季度的方式来命名。《LabVIEW HALCON图像处理入门教程(2024Q3)》,完成于2024年8月。这个版本增加了一个实例“3.10 基于深度学习的字符识别Deep OCR(64位Halcon 23.05)”。这一个实例增加了300页的内容,总页数已经达到了1600多页。这个版本的教程引入了LabVIEW中使用深度学习方面的内容。当然,深度学习是通过Halcon来实现的。NI视觉现在的深度学习还是非常简单的,完全无法落实。
在后续的教程更新中,将主要介绍一些NI视觉中无法实现的,又或者是一些更新的、更先进的知识点,如3D、深度学习等方面的内容。传统的图像处理内容,NI视觉中有相应功能,仅仅只是性能不够强的,参考前面的9个实例就可以扩展开发了,再多介绍也无非是应用于其他的一些项目中,意义不大。
本教程更新过于频繁,仅使用年代加季度无法清晰描述版本,一个季度可能会更新两三个版本。从2024年9月开始,仿照Halcon的版本迭代方式,教程的版本号改来年代月份的方式来命名。《LabVIEW HALCON图像处理入门教程(24.09)》,完成于2024年9月。这个版本比《LabVIEW HALCON图像处理入门教程(2024Q3)》要更新一些。重新规划了一下章节,在《LabVIEW HALCON图像处理入门教程(第二版)》基础上,增加了一个新章节“第4章 LabVIEW Halcon深度学习实例”。将2024Q3版本中新增的“3.10 基于深度学习的字符识别Deep OCR(64位Halcon 23.05)”这个实例放到第4章目录下,并更新为“4.1 基于深度学习的字符识别Deep OCR(64位Halcon 23.05)”。增加了一个深度计数的实例“4.2 基于深度学习的(多个)模板匹配Deep Counting”。
深度计数实例,是基于深度学习的使用模板来做匹配的功能实现。匹配的一个主要作用是用于计数,可以只使用一个模板;也可以使用多个模板。NI视觉中,早期的VDM模块其实也有多模板的匹配,不过执行效率非常低,是基于特征的几何匹配,速度很慢;后面VDM更新的基于边缘的几何匹配速度要快很多,但是放弃了多模板匹配的功能,只能匹配一个模板。当然,传统模板中的定位功能也还是可以实现的,匹配结果有位置、角度等数据返回。
教程已经达到1789页,Word版本大小790MB,30.8万字,图片3151幅。后续仍然将会更新一些深度学习方面的实例介绍,敬请期待。
前置条件
在阅读《LabVIEW HALCON图像处理入门教程》之前,首先应该对LabVIEW的编程方法与原理,有一定的了解,这样对于您使用LabVIEW来开发图像处理软件,将有非常大的帮助。因为教程中的演示例子,重点是介绍图像处理函数的,并不会去介绍LabVIEW的使用方法,如果您对于LabVIEW不了解,那可能会增加学习难度。
其次,《LabVIEW HALCON图像处理入门教程》教程第三章的实例,均是基于作者《NI Vision图像处理开发宝典》中的实例程序框架开发的,也就是LabVIEW中的生产者消费者编程模式。学习《LabVIEW HALCON图像处理入门教程》前,至少对生产者消费者模式有熟练的掌握,明白程序该如何初始化、如何调试、如何自动运行、如何退出,或者是先学习过《NI Vision图像处理开发宝典》。后面介绍的实例中,很多辅助的生产者、消费者,例如初始化、用户登录、保存结果、保存图像、保存机种配置文件、切换机种之类的,都是没有介绍的;甚至是自定义控件都没有花什么篇幅来介绍。重点只是介绍了图像处理相关以及一些与图像处理相关的初始化、释放关闭等生产者消费者,也就是《NI Vision图像处理开发宝典》修改新项目的过程。
第三,《LabVIEW HALCON图像处理入门教程》不是纯粹的调用Halcon的库函数来完成图像处理任务的,而是使用了LabVIEW+NI Vision+Halcon的方式混合编程的。目的就是为了解决一些NI视觉中解决不了问题(如稳定性、速度、性能等方面的欠缺),从而调用Halcon来解决问题。所以,还需要您对NI Vision有充分的了解。NI Vision相关的应用可以参考作者的《LabVIEW Vision函数实例详解》,这个教程是介绍NI Vision每个函数的使用方法的;或者是《NI视觉助手图像处理教程》,这个教程是介绍NI Vision的视觉助手的,包含了大部分的NI Vision大部分的图像函数的使用方法。
开发环境
本教程介绍的开发环境:
LabVIEW开发环境:LabVIEW 2020 SP1 32位中文版:
http://visionbbs.com/thread-26291-1-1.html
NI视觉开发模块:NI Vision Development Module 2020 SP1
http://visionbbs.com/thread-25964-1-1.html
NI视觉采集软件:NI Vision Acquisition Software 20.6
http://visionbbs.com/thread-25966-1-1.html
Halcon环境:Halcon 19.11.0.0 Progress进阶版
http://visionbbs.com/thread-22554-1-1.html
Halcon环境:Halcon 23.05.0.0 Progress进阶版(教程2024Q3/24.09版本增加深度学习字符DeepOCR功能、深度计数DeepCounting功能使用的是这个版本)http://visionbbs.com/thread-30482-1-1.html Halcon安装时,可以选择安装32位版本和64位版本。本教程使用的是32位版本。这个需要与LabVIEW位数版本对应,如果LabVIEW是64位版本,则安装使用64位版本。理论上64位的LabVIEW的数据类型是可以兼容32位Halcon的数据类型的,按操作系统的理论,64位的系统也是可以运行32位的应用程序的。但是在本教程中,64位的LabVIEW是不能调用32位HALCON的,所以只能64位LabVIEW+64位HALCON,32位LabVIEW+32位Halcon这样的版本配置来处理。
安装后,对于64位的版本,则其支持文件位于.. \HALCON-19.11-Progress\bin\x64-win64目录下,如果需要使用你懂的版本,那就要将相应的Halcon.dll放到此目录下替换原始文件。而如果是32位版本,则其支持文件位于.. \HALCON-19.11-Progress\bin\x86sse2-win32目录下,要使用你懂的版本,那也是要用相应的Halcon.dll文件替换此目录下的原始文件。而对于我们要调用的halcondotnet.dll文件,是位于..\HALCON-19.11-Progress\bin\dotnet35目录下,这个是不区分32和64位的。而对于其它一些DLL,如要使用HSmartWindowControl,则需要使用hcanvas.dll,这个DLL则是区分32和64位的(也就是\x86sse2-win32目录下的,则是32位的,而x64-win64目录下的,则是64位的,只要用到了这些目录下的,则区分32/64位)。从Halcon 20.11版本开始,不再支持32位版本,只能使用64位版本。
对于DLL的版本,可以通过VS带的工具查看DLL是32还是64位,也可以直接用记事本打开DLL,然后搜索关键字PE,找到第一个PE,其后面是D字母的,则表示为64位的DLL,其后面是L字母的,则表示为32位的DLL。对于Halcondotnet.dll来说,通过后面的验证,只有32位版本的,没有64位版本的,即使在安装时,选择64位的,Halcondotnet.dll这个库也是32位版本的。
查看DLL位数版本-32位的dll
查看DLL位数版本-64位的dll
另外,这个halcondotnet.dll还区分.NET的版本,如19.11安装后,还有个支持.NET2.0的..\HALCON-19.11-Progress\bin\dotnet20目录,其下也有halcondotnet.dll。当然,对于使用你懂的版本halcondotnet.dll,都需要用你懂的halcon.dll替换32或64位目录下的halcon.dll原始文件。
如果不安装Halcon,也是可以调用halcondotnet.dll进行开发的,这时需要将你懂的halcon.dll和halcondotnet.dll一起放到C:\Windows目录下(一般是这样操作,至于放到开发目录下能不能正常工作,可以自行测试)。
1.Halcon中打开采集获取图像
要想开发图像处理程序,首先当然是要得到要处理的图像。常见的有打开图片的方式,这种只适用于功能演示,看看是不是可以实现功能。图片可以是其它任何图像采集设备得到的图像,如工业相机、摄像头、手机、数码单反、监控等等。另外一种,则是直接从图像采集设备中得到图像,这也是常规的机器视觉项目中使用的方法。
1.1 打开图像和显示图像
1.1.1 HDevelop中打开图像
首先,我们来看个简单的打开图像的小示例。先不急着在LabVIEW中编程,而是在HDevelop中看看打开图像是如何实现的:
打开HDevelop
打开HDevelop IDE环境,然后关闭欢迎界面(如有兴趣,也可以点击相关的内容了解更多详情)。
菜单中选择助手>打开新的Image Acquisition
然后在HDevelop中选择菜单中的助手>打开新的Image Acquisition。这里的助手功能将帮助我们在HDevelop环境中打开或采集图像。
弹出Image Acquisition界面
弹出的Image Acquisition界面,默认是选择资源选项卡。在这个资源选项卡中,可以选择从图像获取接口(相机等采集图像),也可以选择图像文件。这里我们先尝试打开图像,而不是从相机中采集图像。所以,这里我们选择下面的图像文件选项。选中图像文件后,则选择文件和选择路径都启用,可以使用选择文件来选择单一的文件,也可以使用选择目录来选择文件夹中所有文件:
打开文件
打开文件后,就如上图所示,会加载图像到HDevelop环境中。但是这时程序窗口没有提示使用了什么函数。然后再选择代码生成选项卡,相关的参数都使用默认值(打开图像时,只有一个图像对象是可变的,这里默认为image。这里大概与NI Vision中的Create创建图像引用时指定的名称效果一样,不同的名称,则代表了不同的图像引用,对于不同的图像,使用不同图像对象),然后我们点击其中插入代码:
代码生成界面
代码生成后的界面
程序窗口
代码生成后,在程序窗口中可以看到,读取图像调用了函数read_image,将鼠标放置在函数上,会显示即时帮助(HDevelop的即时帮助相对比较简单,没有LabVIEW的即时帮助详细)。从其后面的参数格式可以看到,其第一个参数就是图像对象Image,第二个参数则是打开图像文件的路径和名称。为了理解,我们可以打开Halcon的帮助文档(IDE环境中帮助菜单或F1),查看read_image函数的具体解释:
帮助文档
Halcon安装的本地帮助文档,只有英文、德语、日语版本。如果外国语言不佳的,看起来可能比较吃力。另外,可以打开MVTEC的在线帮助文档页面,可以利用浏览器的在线翻译功能,也许会有一些帮助。Halcon 19.11版的帮助链接为(各个版本的帮助链接是不一样的):
https://www.mvtec.com/doc/halcon/1911/en/index.html
Halcon 19.11在线帮助页面
而具体的函数可以通过导航查找,如本节介绍的read_image函数,在File>Images下面:
链接为:
https://www.mvtec.com/doc/halcon/1911/en/read_image.html
具体帮助打开后,如下图:
英语原版函数说明
可以启用浏览器在线翻译功能(部分浏览器功能,或需要安装插件,不代表全部浏览器都有此功能):
翻译后的函数说明
翻译的内容,只是机器翻译,很多地方肯定是不太准确的,不过也了胜于无。如果对于其它的一些比较难理解的函数,可以尝试搜索引擎搜索,有很多函数,都有人做了汉化说明,可能更准确实用。
lal7980 发表于 2024-3-14 12:47
LabVIEW HALCON图像处理入门教程(第二版)是纸质教程还是电子版?
PDF电子版,加密U盘发货 好东西 石鑫华视觉网http://shixinhua.com,工业相机、工业镜头、机器视觉光源、光源控制器、图像处理、系统集成服务商 学习一下.......................... 看看学习一下 学习一下,谢谢分享 好东西 学习一下 支持 :(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:( 6666666666666666666666666666666666 学习学习 好东西!!!!!