当前位置: 首页 > ops >正文

算子窗口操作

抠图 (提取图像感兴趣的区域)

 
* 使用halcon 抠图* 窗体属性设设置: 设置窗体绘制图案的模式   magrin边框模式(只有一个边框)  
* fill填充模式(边框内部会有一个遮罩层)
dev_set_draw ('fill')* 设置颜色
dev_set_color ('green')
* 设置线宽dev_set_line_width (5)read_image (Image, 'printer_chip/printer_chip_01')* 获取当前图像窗口的句柄
dev_get_window (WindowHandle)*draw_rectangle1() 设置在哪个窗口绘制矩形,以及获取坐标(不会绘制)
*参数1: 窗口的句柄
*参数2: 输出x
*参数3: 输出y
*参数4: 输出x1
*参数5: 输出y1* halcon中横向的是y轴   纵向的是x轴  行列坐标
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)* 根据起点和终点的坐标,在窗体上绘制矩形  生成一个区域类型的变量
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)* 获取当前区域的 阈值范围
* 设置选择的图像正常显示,其他的区域被黑色遮住
* 参数1: 原始图像
* 参数2: 选择的区域
* 参数3: 生成的新图像
reduce_domain (Image, Rectangle, ImageReduced)* 根据阈值范围抠图* 参数1: 需要提起的图像
* 参数2:提取出的新图像
crop_domain (ImageReduced, ImagePart)

halcon 窗体有关的算子【函数】

特点: dev_开头 在Hdevelop 开发工具中有那些窗体

  1. 图像窗口:用于渲染 图片,区域,轮播 视频流等

  2. 变量窗口:用户展示输出变量;图像变量,控制变量

  3. 程序窗口;用于编写图像算法程序

  4. 算子窗口;用于查看算子的参数;输出 输入 类型

  5. 监控窗口;监视元素变化 ,对象类型等


* 窗口有那些操作:*1.新建窗体
*2.设置窗体中显示的内容
*3.关闭窗体,输出窗体
*4.更新窗体
*5.设置窗体属性: 背景颜色 字体大小 绘制图像
*6.在窗体上绘制图形,显示文本....test:=[1,2,3,4]* 打开监视变量的窗体
* 参数1: 需要监视的变量
dev_inspect_ctrl (test)* 暂停程序
stop()
test[1]:=666stop()test[2]:=888*关闭监视test变量的窗体
dev_close_inspect_ctrl (test)* 打开一个新的窗体
dev_open_window (0, 0, 600, 600, 'black', aaa)
dev_open_window (0, 0, 500, 500, 'yellow', bbb)
dev_open_window (0, 0, 400, 400, 'green', ccc)*关闭窗体  默认关闭最后一个窗体
* dev_open 打开窗体 放到集合中    dev_close 是从集合的尾部删除元素
dev_close_window ()*设置窗体的属性 ,设置的是最后打开的图像窗体上的属性
dev_set_color ('red')
dev_set_draw ('margin')
dev_set_line_width (10)
*设置错误的显示方式
dev_set_check ('~give_error')* 绘制圆形
*参数1: 在哪个窗口中绘制
*参数2参数3圆心的坐标
* 参数4 :半径
draw_circle (bbb, Row, Column, Radius)*绘制圆形  
* 参数1: 绘制出来的圆形
* 参数2参数3: 需要绘制的圆的圆心坐标
* 参数4:半径
gen_circle (Circle, Row, Column, Radius)dev_get_window (WindowHandle)draw_circle (WindowHandle, Row1, Column1, Radius1)gen_circle (Circle1, Row1, Column1, Radius1)* disp 是display 的 简称  表示  显示* 参数1: 在哪个窗体显示
* 参数2,参数3: 显示的圆心坐标
* 参数4: 半径
disp_circle (WindowHandle, Row1, Column1, Radius1)* 注意:当开启多个图形窗口的时候,很多操作都要注意先后顺序* 很多算子,都是在最后打开的窗体中操作的

加载图像划分区域


*使用工具生成代码
*图形窗口   -->绘制新的ROI  -->选择要绘制的形状   ---> 工具--->插入代码
gen_rectangle1 (ROI_0, 143.754, 108.459, 218.251, 281.718)stop()dev_clear_window ()read_image (Image, 'printer_chip/printer_chip_01')* 获取图像高度和宽度
get_image_size (Image, Width, Height)* 根据像素之间的灰度值将图像划分成n个区域
* 参数1:输入图像
* 参数2:输出区域的集合
* 参数3:横向像素之间的距离
* 参数4:纵向像素之间的距离
* 参数5:  灰度值
* 参数6: 输出区域的最小面积
regiongrowing (Image, Regions, 3, 3, 6, 100)
* 获取区域的总数量
count_obj (Regions, Number)for Index := 1 to Number by 1dev_clear_window()* 从集合中获取某个对象select_obj (Regions, ObjectSelected, Index)dev_display (ObjectSelected)
endfor

 生成网格图像

* 生成网格图片 类型是图像类型
gen_image_squared_paper (ImageSquaredPaper)

 

窗体文本标记

文本标记流程

  1. 创建描述文字的变量

  2. 设置窗体上显示文字的,种类,大小 ,颜色,以及哪个窗体的属性

  3. 将文字显示到窗体上

  4. 显示在哪个窗体,哪个位置上,生么字体,大小多啊后,背景颜色,字体颜色,盒子阴影...等属性

  5. 文字既可以在窗体上,也可以在图片,标记。

* 初始化
dev_close_window ()dev_get_window (WindowHandle)*设置某个窗体上文本显示的带大小   字体类型  是否粗体
*参数1: 窗体的句柄
*参数2:字体大小
*参数3:字体类型
*参数4:是否为粗体
*参数5:是否为斜体
set_display_font (WindowHandle, 16, 'sans', 'true', 'false')* 在图像窗口上显示文本
*参数1:需要显示的文本内容
*参数2: window 表示在窗体上显示文字  Image表示在图像上显示文字
* 参数3参数4 显示的位置  top left 左上角  
*  top 上   bottom 下   left 左  right 右 center 中间
dev_disp_text ('吴亦凡1', 'window', 'top', 'left', 'black', [], [])dev_disp_text ('吴亦凡2', 'window', 'center', 'center', 'black', [], [])dev_disp_text ('吴亦凡3', 'window', 'bottom', 'right', 'black', [], [])* 设置显示到某一个坐标位置
dev_disp_text ('吴亦凡4', 'window', 100, 100, 'black', [], [])*  参数5 字体颜色
dev_disp_text ('吴亦凡5', 'window', 100, 100, 'red', [], [])* 
dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['box_color'], ['green'])
dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['shadow'], ['false'])dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['shadow_color','box_color'], ['yellow','green'])https://blog.csdn.net/chenai886/article/details/145136736

 关于算子详细的窗体操作:

HALCON 【窗体操作】 dev_disp_text_halcon disptext-CSDN博客

http://www.xdnf.cn/news/7745.html

相关文章:

  • 如何使用redis做限流(golang实现小样)
  • 软考 系统架构设计师系列知识点之杂项集萃(66)
  • 信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
  • 软件测试知识详解
  • 微服务中API网关作用(统一入口、路由转发、协议转换、认证授权、请求聚合、负载均衡、熔断限流、监控日志)
  • AI护航化工:《山西省危化品视频智能分析指南》下的视频分析重构安全体系
  • elementui初学1
  • Rocky Linux 8.9 升级至 8.10 测试可通过以下步骤完成
  • Ubuntu20.04部署KVM
  • Android Binder线程池饥饿与TransactionException:从零到企业级解决方案(含实战代码+调试技巧)
  • NSSCTF [HGAME 2023 week1]easy_overflow
  • Dify的大语言模型(LLM) AI 应用开发平台-本地部署
  • MySQL中的JSON_CONTAINS函数用法
  • 自动驾驶中的预测控制算法:用 Python 让无人车更智能
  • 微软正式发布 SQL Server 2025 公开预览版,深度集成AI功能
  • 基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析实践技术应用
  • VLM-MPC:自动驾驶中模型预测控制器增强视觉-语言模型
  • Open CASCADE学习|刚体沿曲线运动实现方法
  • 高并发架构设计之限流
  • 【初识】内网渗透——基础概念,基本工具使用
  • 用户栈的高效解析逻辑
  • JavaWeb 开发流程
  • Java基础 Day17
  • 给几张图片和一段文字,怎么制作成带有语音的视频---php
  • 从零搭建SpringBoot Web 单体项目【基础篇】2、SpringBoot 整合数据库
  • Mysql的binlog日志
  • .NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)
  • 八: 人工神经元/感知机 算法
  • Python数据可视化高级实战之一——绘制GE矩阵图
  • Windows安装MongoDb.并使用.NET 9连接