1、范例程序

//先新建一个窗口,用于显示图片

dev_open_window(0,0,-1,-1,'black',testWin)

//打开一张图片(第一个参数是名字(自定义),第二个参数是路径)

read_image (Die03,'C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/die/die_03.png')

//从图片Die03中找出灰度值为128-255的区域输出到区域brightRegion

threshold (Die03,brightRegion, 128, 255)

//找出能包含区域brightRegion的最小矩形区域输出到区域RegionTrans

shape_trans(brightRegion, RegionTrans, 'rectangle1')

//通过最小矩形区域确定出裁剪后的图片并输出到ImageReduced(图片)

reduce_domain(Die03, RegionTrans, ImageReduced)

注:上述步骤是用于缩减要处理的图片,为之后的处理提高效率

注:connection输出的是一个区域数组

//在裁剪后的图片上找出灰度值为0-50的区域输出到区域Region

threshold(ImageReduced, Region, 0, 50)

//填充区域Region并输出到RegionFillUp

fill_up_shape(Region, RegionFillUp, 'area', 1, 100)

//将区域ReRegionFillUp区域中不是圆的部分移除,结果输出到区域rmNoneCircle

opening_circle(RegionFillUp, rmNoneCircle, 15.5)

//由于rmNoneCircle是图片的一部分,调用这个算子将它独立出来输出到区域circleRegions

//抽出独立的物体组成一个区域

connection(rmNoneCircle, circleRegions)

//选择满足0.85-1.0范围的圆的区域,输出到finalRegion

select_shape (circleRegions, finalRegion,'circularity', 'and', 0.85, 1.0)

//将finalRegion区域数量统计出来,输出到变量Number

count_obj(finalRegion, Number)

//找出包含区域的最小圆

smallest_circle(finalRegion, Row, Column, Radius)

2、语法

|XXXX|:求XXXX中的元素个数

Sum(XXXX):求XXXX中元素的和

3、效果(最终结果是找出紫色部分的圆形空洞)

4、范例程序2

//打开一个窗口用于显示图片

dev_open_window(0,0,-1,-1,'black',winHandle)

//打开一副图片并命名为Die03

read_image (Die03,'C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/die/die_03.png')

//等待用户在图片上画出矩形,所绘制的矩形参数传递给Row1 Column1…等参数

draw_rectangle1(winHandle, Row1, Column1, Row2, Column2)

//用用户绘制矩形时所确定的参数生成一个矩形区域,结果传递给tmpRect

gen_rectangle1(tmpRect, Row1, Column1, Row2, Column2)

//用矩形区域裁剪出用于处理的图像输出到ImageReduced,用来提高效率

reduce_domain(Die03, tmpRect, ImageReduced)

//用那个小区域的图片生成一个模板

create_template(ImageReduced, 5, 4, 'sort', 'original', TemplateID)

//用户绘制的矩形的中点

tmpRow :=(Row1+Row2)/2

tmpCol :=(Column1+Column2)/2

//将图片和模板快速匹配,输出匹配的区域到Matches

fast_match (Die03,Matches, TemplateID, 20)

//将区域从图像独立出来并拆分,结果输出到circleRegions(一个存放区域的数组)

connection (Matches,circleRegions)

//统计出匹配的区域数量(即数组的元素个数)

count_obj(circleRegions, Number)

//注:circleRegions是一个独立于图像的区域,无法匹配

//所以下面这个算子是将图片Die03中的原始数据输入到circleRegions形成新的图片输出到tmpImage

add_channels(circleRegions, Die03, tmpImage)

//在tmpImage中与模板匹配的区域,将匹配的坐标信息存出到数组Row和Column

best_match(tmpImage, TemplateID, 20, 'true', Row, Column, Error)

//将匹配的矩形绘制出来

disp_rectangle1(winHandle, Row1+Row-tmpRow, Column+Column1-tmpCol, Row+Row2-tmpRow,Column+Column2-tmpCol)

运行效果如下图

HDevelop实现图片中局部图形识别标记相关推荐

  1. 项目记录一:用Python识别图片中指定颜色标记块并绘制其最小矩形框以及坐标点

    记录准研一小白第一次动手实践课题组师姐安排的任务,非常感谢CSDN前辈们所撰写的博客对我的帮助. 一.项目背景 如图所示,有这样一张现场勘测的图片,要实现绘制出图中三个黄色标记块的最小矩形框以及左上角 ...

  2. 使用java+OpenCV进行图片对比并标记差异部分(支持中文图片路径)

    1.设计方法为: 首先将两个图片转化为灰度图: 进行灰度图比对,1为完全相同,此处可以插入阀值: 计算两个灰度图的绝对差值并放入一个新的Mat对象: 将新的mat对象进行绝对差值化: 寻找轮廓图并用红 ...

  3. Computer science 概念汇总

    文章目录 机器学习&深度学习相关 DNN DNN与MLP的区别 CNN 人类视觉原理 CNN 的基本原理 应用 总结 MLP 其它常见名词含义 数据压缩相关 启发式算法相关 机器学习& ...

  4. 快速掌握 深度学习(Deep Learning) 常用概念术语,常用模型

    1.什么是深度学习? 深度学习的概念: 深度学习是机器学习的一个分支,深度学习是使用了深度神经网络的机器学习 . 所以深度学习=深度神经网络+机器学习. 神经网络,也叫作人工神经网络 .是一种模拟人脑 ...

  5. YOLOv5基础知识点——卷积神经网络

    一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)- 产品经理的人工智能学习库 (easyai.tech) 人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处 ...

  6. 双阈值检测阈值选择_通过阈值进行计算机视觉高级车道检测

    双阈值检测阈值选择 In my earlier post, I talked about finding lane lines using Edge Detection and Hough Trans ...

  7. 卷积神经网络 CNN 简述

    文章目录 所解决的问题 需要处理的数据量太大 很难保留图像特征 基本原理 卷积层 -- 提取图像特征 池化层 -- 数据降维(避免过拟合) 全连接层 -- 输出结果 实际应用 图像分类.检索 目标检测 ...

  8. Photoshop CS5自学学习笔记

    Photoshop CS5学习笔记 常宝龙 2014年6月     引言 一直以来都对Photoshop非常感兴趣,每当在网上看到一些Photoshop大神做出的很神奇的图片时,都会莫名其妙的从心底里 ...

  9. 原创《基于深度特征学习的细粒度图像分类研究综述》

    原创,未经同意,请勿转载 后记:这篇综述文章虽然是19年放出来,但是我在18年初的时候写的,当时准备找个国内期刊投一下的,后面某些原因放弃了.所以文中引用的方法都是17年以前的,有点过时了,现在又出现 ...

最新文章

  1. ajax异步后台存放购物车表,jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)...
  2. 一位被信号与系统耽误了的漫画家
  3. 车坛刮起了一阵文艺风
  4. ajax传formdata类型的数据_JQuery.Ajax()的data参数类型
  5. Java文件删除操作File#delete()
  6. Sencha touch Panel之间的跳转(如不使用TabPanel或者Carousel控件而产生跳转的动画效果)...
  7. dblink传输clob字段
  8. 笔记:less的三种使用方法
  9. 大中台模式下如何构建复杂业务核心状态机组件
  10. 【转】探秘Java中的String、StringBuilder以及StringBuffer
  11. 多元统计分析假设检验
  12. Windows图片和传真查看器开启故障
  13. 分析锂电池充放电保护电路的特点及工作原理
  14. php后台发布微信小程序
  15. LTE MAC层令牌桶算法
  16. java split 不含_java神坑系列——split
  17. 红旗Linux桌面操作系统V11社区预览版系统安装
  18. 爬取历史天气数据并绘制成折线图
  19. MacOS QT qmake 与 CMake 设置ICON
  20. Tanner L-Edit 系列教程:02 示例安装与工艺库

热门文章

  1. C++:替换文本文件中的某些字符
  2. Linux放弃到入门
  3. 十行js代码实现windows上录屏功能
  4. 加速度运动/弹性运动/模拟重力场/拖拽运动
  5. SecureRandom的江湖偏方与真实效果
  6. 四十四、​Fluent 收敛标准-质量和能量守恒
  7. java中整数的整数次方_数值的整数次方
  8. 测试语文水平的软件,语文试卷质量分析
  9. allure如何设置新logo
  10. java.exe占用cpu高_Java进程cpu占用过高问题解决