功能:

1、按住鼠标左键拖动鼠标进行擦除工作,松开鼠标停止擦除

2、继续按住鼠标左键重复功能1,鼠标右键退出

这里使用到的halcon是17.12版本的对应同版本的HDevelop,在API中就找到两个鼠标事件:

get_mbutton 和 get_mposition

前者等待鼠标按下,后者无需等待直接监听鼠标并且都是一次触发一次返回,这样一来实现上面的功能就要挠一挠脑壳了。

halcon实现:

read_image (Image, 'printer_chip/printer_chip_01')
*选择区域
draw_rectangle1 (200000, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
reduce_domain (Image, Rectangle, ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
**橡皮擦功能,特征屏蔽***********************************
*橡皮擦大小
EraserSize:=10
*橡皮擦形状
EraserType:='rectangle'
gen_empty_obj(region_removeds)
*橡皮擦路过的坐标集
Rows := []
Cols := []
*擦除工作
Button:=0
set_display_font (200000, 26, 'mono', 'true', 'false')
disp_message (200000, '按下鼠标进行擦除功能,松开鼠标将结束', 'window', 12, 12, 'red', 'false')
while (Button == 0)get_mbutton (200000, Row, Column, Button)while (Button == 1)get_mposition (200000, Row, Column, Button)Rows := [Rows,Row]Cols := [Cols,Column]*生成橡皮擦擦过的区域if(EraserType=='rectangle')gen_rectangle2 (Eraser,Row, Column,0, EraserSize,EraserSize)elsegen_circle (Eraser, Row, Column, EraserSize)endif*橡皮擦区域合并union2(region_removeds,Eraser,region_removeds)endwhile
endwhile
*区域相减
difference (ImageReduced, region_removeds, RegionDifference)
reduce_domain (ImageReduced, RegionDifference, ImageReduced)**创建模板******************************************************
create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
find_shape_model (Image, ModelID, rad(-180), rad(180), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*获取模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)
dev_clear_window ()
dev_display (Image)
dev_set_line_width (2)
*将模板映射到目标上
vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)

结果反馈(以图中二维码区域为例):

没有擦除过的模板特征反馈:

橡皮擦功能:

使用了橡皮擦功能的反馈:

---

推荐阅读

我的Qt作品(5)使用Qt+Halcon实现模板匹配;支持ROI框选/橡皮擦功能

我的Qt作品(5)使用Qt+Halcon实现模板匹配;支持ROI框选/橡皮擦功能_libaineu2004的博客-CSDN博客_qt橡皮筋

halcon模板匹配实践(5)使用橡皮擦涂抹功能实现减少模板匹配特征相关推荐

  1. 我的Qt作品(5)使用Qt+Halcon实现模板匹配;支持ROI框选/橡皮擦涂抹功能

    声明: 本作品的开发初衷是来自一篇博客(链接见文末).源码是基于网友的原创版本,本人在此基础上重构和新增功能. 网友原创版本截图: 开发环境: Windows7/10 x64,VS2017,Qt5.1 ...

  2. 苹果cmsv10自适应模板自带后台系统原创多功能漂亮主题

    模板主题介绍: 模板名称:苹果cmsv10自适应模板自带后台系统原创多功能漂亮主题 模板程序:苹果cmsv10 模板类型:自适应模板 空间支持:php5.6+mysql 模板颜色:白色 模板来源:原创 ...

  3. halcon模板匹配实践(1)算子参数说明与算子简介

    create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, ...

  4. c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...

    Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...

  5. PHP模板怎样安装,phpcms网站程序如何安装新的模板文件

    先分享下大概的步骤: 1.上传模版文件到服务器:2.在站点管理 里边[模板风格配置]选择新模板:3.设置不同模型对应模板:4.修改现有的栏目,匹配新模板:5.更新栏目缓存.系统缓存,更新HTML静态页 ...

  6. 模板 (函数模板语法 ,类模板与函数模板的区别,:函数模板案例,普通函数与函数模板的区别,普通函数与函数模板调用规则,模板的局限性,类模板分文件编写.cpp,Person.hpp,类模板与友元)

    **01:函数模板语法: #include<iostream> using namespace std;//交换两个整型函数 void swapInt(int &a ,int &a ...

  7. leangoo新增自定义模板、移动卡片、复制泳道功能

    本次更新增加了看板自定义模板,移动卡片和复制泳道功能,同时也对复制卡片.加载看板等功能进行了优化.以下是此次更新详情: 1. 自定义模板 您可以将已有的看板设置为自定义模板 自定义模板会复制看板内的成 ...

  8. R语言应用str_match函数和str_match_all函数从字符串抽取匹配的字符串模式:str_match函数抽取第一个匹配的字符串模式、str_match_all函数抽取多个匹配的字符串模式

    R语言应用str_match函数和str_match_all函数从字符串抽取匹配的字符串模式:str_match函数抽取第一个匹配的字符串模式.str_match_all函数抽取多个匹配的字符串模式s ...

  9. R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串、str_replace_all函数替换所有匹配到的

    R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串.str_replace_all函数替换所有匹配到的 ...

  10. springboot模板引擎_Spring Boot实战:如何搞定前端模板引擎?

    作者:liuxiaopeng 链接:https://www.cnblogs.com/paddix/p/8905531.html 前言 虽然现在很多开发,都采用了前后端完全分离的模式,即后端只提供数据接 ...

最新文章

  1. Android Jetpack LiveData 源码解析
  2. python最低薪资_最低15K,最高50K,Python薪资节节高,小白怎么学?
  3. 科大星云诗社动态20210511
  4. PHPsymfony
  5. 关于opencv中Mat赋值(浅拷贝,深拷贝)原理
  6. 【Objective-C】玩转OC:正式开始自学OC
  7. 2020阿里云双12-企业飞天会员年终盛典全攻略
  8. 对.NET的GC(垃圾回收)的理解都存在错误认识
  9. 经典算法题--求对策字符串的最大长度
  10. 详细记录一次npm i canvas报错的解决过程
  11. MATLAB中ones()函数的用法
  12. 备案指的是域名还是服务器?
  13. 【Java愚公】gitlab关闭注册功能
  14. 问题:VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path
  15. Optimizing the Transition Waste in Coded Elastic Computing(实现0浪费弹性编码计算)
  16. html遇到英文单词整体换行,HTML在table中如何强制单词换行
  17. java中草药美白淡斑紧肤膏_美白淡斑中药面膜配方 中药美白祛斑配方_怎样用中药偏方祛斑_自制中药美白祛斑法_养生频道_快速问医生...
  18. matlab标定工具箱 使用,关于 matlab 标定工具箱的使用 | 学步园
  19. 学生用计算机app,学生方程计算器
  20. 布袋除尘器过滤风速多少_袋式除尘器过滤风速一般多大

热门文章

  1. 数组填空题c语言及答案,C语言程序设计 程序填空题库及答案
  2. sublime配置go环境_如何为Sublime3配置Go语言开发环境
  3. c++随笔——隐藏窗口
  4. 谱尼软件测试谱尼为网络安全护航
  5. HTTP hijack
  6. python爬取周杰伦歌词_Python 爬取周杰伦 instagram
  7. 2015年讲师评选正式开始,培训行业讲师年终总结啦!!
  8. jquery stop()方法的讲解使用
  9. ios 表情符号 键盘_iOS自定义的emoji表情键盘
  10. 网站灰色代码|哀悼日专用