思路:打光的时候需要比较好的效果,让螺钉和周围的孔洞灰度值相差比较大,这样方便检测。

第一步就是模板匹配,用HALCON的匹配助手。下面是匹配助手生成的代码

*
* Matching 01: ************************************************
* Matching 01: BEGIN of generated code for model initialization
* Matching 01: ************************************************
set_system ('border_shape_models', 'false')
*
* Matching 01: Obtain the model image
read_image (Image, 'I:/学习21下/机器视觉/第4次作业/1.jpg')
*
* Matching 01: Build the ROI from basic regions
gen_rectangle1 (ModelRegion, 1324.12, 1322.54, 2720.69, 3309.25)
*
* Matching 01: Reduce the model template
reduce_domain (Image, ModelRegion, TemplateImage)
*
* Matching 01: Create the shape model
create_shape_model (TemplateImage, 8, rad(0), rad(360), rad(0.0982), ['point_reduction_high','no_pregeneration'], 'use_polarity', [24,46,47], 4, ModelID)
*
* Matching 01: Get the model contour for transforming it later into the image
get_shape_model_contours (ModelContours, ModelID, 1)
*
* Matching 01: Get the reference position
area_center (ModelRegion, ModelRegionArea, RefRow, RefColumn)
vector_angle_to_rigid (0, 0, 0, RefRow, RefColumn, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
*
* Matching 01: Display the model contours
dev_display (Image)
dev_set_color ('green')
dev_set_draw ('margin')
dev_display (ModelRegion)
dev_display (TransContours)
stop ()
*
* Matching 01: END of generated code for model initialization
* Matching 01:  * * * * * * * * * * * * * * * * * * * * * * *
* Matching 01: BEGIN of generated code for model application
* Matching 01: The following operations are usually moved into
* Matching 01: that loop where the acquired images are processed
*
* Matching 01: Find the model
find_shape_model (Image, ModelID, rad(0), rad(360), 0.5, 0, 0.5, 'least_squares', [8,1], 0.75, Row, Column, Angle, Score)
*
* Matching 01: Transform the model contours into the detected positions
dev_display (Image)
for I := 0 to |Score| - 1 by 1hom_mat2d_identity (HomMat2D)hom_mat2d_rotate (HomMat2D, Angle[I], 0, 0, HomMat2D)hom_mat2d_translate (HomMat2D, Row[I], Column[I], HomMat2D)affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)dev_set_color ('green')dev_display (TransContours)stop ()
endfor
*
* Matching 01: Clear model when done
stop ()
clear_shape_model (ModelID)
* Matching 01: *******************************************
* Matching 01: END of generated code for model application
* Matching 01: *******************************************
* 

在中间添加代码进行图像处理

找到感兴趣区域,转灰度,二值,计算面积

        dev_set_color ('red')*计算下来Angle几乎为0,不予考虑*gen_circle(LeftUp, Row[I]-cos(Angle[I])*596.0, Column[I]-cos(Angle[I])*796.5, 30)*左上角圆设置为感兴趣区域gen_circle(LeftUp, Row[I]-596.0, Column[I]-787.5, 30)*原图中截取出来这个位置的图像reduce_domain(Image,LeftUp,Hole1)*转灰度图rgb1_to_gray(Hole1,Hole1_gray)    *转二值图threshold(Hole1_gray,Hole1_gray_bin,150,255)   *求区域面积,也就是比较白的区域的面积,这样就判断是不是有白色的钉子area_center (Hole1_gray_bin, Area1, Row1,Column1)  

设置显示参数

        *设置一些显示的参数,画圆的颜色和显示的字体dev_set_color ('green')dev_get_window (WindowHandle)set_display_font (WindowHandle, 16, 'mono', 'true', 'false')color := [255,0,255]

再可视化

        *判断三个区域是否有钉子,如果没有,就把区域填充为粉色并对应显示出来,如果完好无损也提示一下*面积阈值先设置为5,小于5就认为没有钉子if(Area1 <5)*填充为粉色overpaint_region (Image, LeftUp, color, 'fill')*提示没有钉子disp_message (WindowHandle, ['The Left-Up Misses!'], 'window', 12, 120, 'red', ['green','false'])elseif(Area2 <5)overpaint_region (Image, RightUp, color, 'fill')disp_message (WindowHandle, ['The Right-Up Misses!'], 'window', 12, 120, 'red', ['green','false'])elseif(Area3 <5)overpaint_region (Image, RightDown, color, 'fill')disp_message (WindowHandle, ['The Right-Down Misses!'], 'window', 12, 120, 'red', ['green','false'])else*都不满足就是完整的disp_message (WindowHandle, ['NONE Misses'], 'window', 12, 120, 'red', ['green','false'])endif

运行结果:

记录一下HALCON检测螺钉是否存在相关推荐

  1. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(二)

    本文接着上一篇记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配 打开HALCON并打开匹配助手 匹配助手如图 "创建"页说明: 1,选择匹配方式 中间偏上方的下拉 ...

  2. HALCON检测字符日期

    这个例子展示了利用HALCON检测包装盒上面的数字日期,此示例演示了如何与自动文本读取器在双边过滤图像上细分酸奶盖的到期日期.具体解释见注释. * This example demonstrates ...

  3. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(三)

    接着上一篇记录一次HALCON利用匹配助手进行模板匹配详细过程 首先,在匹配助手窗口和采集助手窗口调整参数直到稳定匹配上之后,在实时的状态下点击生成代码 点击完生成了代码,关闭匹配助手窗口和采集助手窗 ...

  4. CVPR 2021 | 记录SCRFD人脸检测C++工程化(含docker镜像)

    作者 | DefTruth@知乎(已授权) 来源 | https://zhuanlan.zhihu.com/p/455165568 编辑 | 极市平台 导读 前段时间写了篇关于SCRFD(吊打了自己的 ...

  5. Halcon检测边缘——笔记

    绿色:注释  褐色:控制开发  浅蓝色:外部函数--HDevelop函数文件,可在所有Halcon程序中使用  深蓝色:图像获取和处理  紫色:内部函数--本地程序函数,只在当前程序使用 做个补充:如 ...

  6. 移植mysql到安卓手机_记录dbnet文本检测转ncnn并移植到安卓上

    目前,文本检测主要分为基于检测网络和分割网络实现,上文(风影:记录densenet-ocr识别网络转ncnn并移植到安卓手机)讲到将yolo3文本检测+densenet识别网络转ncnn推理,并成功移 ...

  7. 技术贴_关于某信辅助分析记录和若干检测方法

    迪恩爱抚超时空最近几天出现了一款稳如狗的信外挂 某信蹦跶那么久- 从朋友借来某信 把分析记录写了下来 传说中稳如狗的F1秒杀到底是神魔恋? 众所周知某信用的是DLL劫持技术,所以无视TP驱动(也就是图 ...

  8. 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(一)

    具体内容见下一篇记录HALCON匹配助手使用全过程,都是在HALCON中实现并测试稳定后,再转入VS2019 模板是dxf文件: 创建dxf文件的部分内容 CAD等比例缩放图形 cad中如何关掉坐标系 ...

  9. OpenCV学习代码记录——轮廓(contour)检测

    很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...

最新文章

  1. IT创业光技术好,谋略定位不好,你很可能会死得很惨,丢钱、丢客户、丢成果、丢商机、丢思路...
  2. python 使用 redis expire属性设置访问时间间隔
  3. css中vertical-align生效
  4. python中的函数、生成器的工作原理
  5. iOS开发UI篇—iOS开发中三种简单的动画设置
  6. 养蛙游戏刷爆朋友圈,养蛙成功“反杀”传统手游?
  7. 更改hadoop native库文件后datanode故障
  8. Microsoft Visual Studio Code
  9. 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
  10. Ubuntu16.04下在Anaconda里面安装opencv
  11. 谁说程序员不懂浪漫?
  12. 我如何开始使用Node.js [关闭]
  13. Map集合类型总结,常见Map集合有哪些?他们的优缺点分别是什么?
  14. JAVA使用JEP进行动态公式计算
  15. 如何用c语言实现猜数字游戏?
  16. 在VM虚拟机上安装Red Hat Enterprise Linux
  17. C++ : 陶陶摘苹果
  18. 实习生招聘收割阿里、腾讯等大厂Offer后,有些话想和应届生说
  19. 电容笔和触控笔有什么区别?好用不贵主动电容笔推荐
  20. ubuntu使用meld/beyond compare 做git的diff工具

热门文章

  1. 了解的四大关键性概念
  2. 桌面桌面虚拟化-Vmware 兼容性怎么查询
  3. Activity与Fragment的生命周期详解
  4. 解决Subquery returns more than 1 rowsql查询错误
  5. HDFS以IO流的形式上传和下载文件案例
  6. hadoop集群配置与启动
  7. 【CF464E】The Classic Problem(主席树+最短路)
  8. (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
  9. Django 中的 cookie 和 session
  10. 支持字母数字下划线和中文的正则