Halcon图像和文件操作

news/2024/7/5 6:20:28/文章来源:https://www.cnblogs.com/ZHIZRL/p/18277245

文件操作

dev_get_window (WindowHandle)
* 遍历文件夹
list_files ('C:/Users/Desktop/halcon deeplearn/Train_images', ['files', 'recursive'], Files)
* 便利文件夹中的图像文件
list_image_files ('C:/Users/Desktop/halcon deeplearn/Train_images/梨', 'default', [], ImageFiles)
* 筛选bmp及jmp格式的图片配合list_files算子使用
tuple_regexp_select(ImageFiles, ['\\.(bmp|jpg)$','ignore_case'], Files)
* 打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)
* 依次读取所选图片并显示 在窗口中
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])dev_display(Image)* 分割文件名    BaseName文件名    Extension文件后缀    Directory文件路径parse_filename(ImageFiles[Index], BaseName, Extension, Directory)* 保存图片,给出路径及名称,新文件名为在原文件名后添加_adjdump_window(WindowHandle,'bmp',Directory + BaseName + '_adj')stop ()
endfor

图像读取

read_image (Image, 'printer_chip/printer_chip_02')
read_image (Image1, ['printer_chip/printer_chip_01', 'printer_chip/printer_chip_05'])
** 选择对象中目录    数组索引从1开始
select_obj (Image1, ObjectSelected, 1)
** 统计对象中目录数量
count_obj (Image1, Number)

图像增强 

概念和分类

图像增强:有目的的强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同特征之间的差别,抑制不感兴趣特征,改善图像质量,丰富信息量,满足分析需要。

图像增强技术基本分为两类:

1、**空间域法:**包含图像像素的空间,在空间域中,直接对图像进行各种线性或非线性运算,对图像的像素灰度做增强处。分为点运算(作用于像素领域的处理方法,包括灰度变换,直方图修正,伪彩色增强等)和模板处理(作用于像素领域的处理方法,包括平滑,图像锐化等)两大类。

2、**频域法:**在图像的变换域中把图像看作一种二维信号,对其进行基于二维傅里叶变换的信号增强,常用的方法有低通滤波,高通滤波及同态滤波。

灰度变换

灰度变换是根据某种目标条件按一定变换关系逐像素点改变图像中灰度值的方法,也称对比度增强或对比度拉伸。常用的灰度变换方法有:线性灰度变换;分段线性灰度变换;非线性灰度变换。

线性变换算子

反转图像:
invert_image(image输入图像:imageinvert输出图像::)

增强图像对比度:
emphasize(image输入图像:imageemphasize输出图像:maskwidth低通掩膜宽,maskheight低通掩膜高,factor对比度强度:)

原理:首先,该过程使用低通(mean_image)进行过滤。由得到的灰度值(mean)和原始灰度值(orig)计算得到的灰度值(res)如下:

通过参数3、4控制均值滤波模板的大小,数值越大,则图像对比度越强,一般配合参数5—Factor(对比度强度)一起对图像进行增强处理。
作用:增强图像的高频区域(边缘和拐角),使图像看起来更清晰。

缩放图像的灰度值:

scale_image(image输入图像:imagescaled缩放后图像:mult比例因子,add补偿值:)
1、扩展动态范围:当mult>1时,结果会使图像灰度取值的动态范围展宽,图像对比度增大,可以改善曝光不足的缺陷,或充分利用图像显示设备的动态范围
2、改变取值空间:当mult=1时,变化后灰度动态范围不变,灰度取值区间会随a和c的大小而上下平移,效果是使整个图像更暗或更亮
3、缩小动态范围:当0<mult<1,则变换后图像动态范围会变窄,图像对比度变小
4、反转或取反:当mult<0,则变化后图像的灰度值会反转,即图像中亮的变暗,暗的变量;当mult=-1时,输出图像为输入图像的底片效果

*读取图像
read_image (Image, 'printer_chip/printer_chip_01')
*关掉窗口
dev_close_window ()
*得到图像尺寸
get_image_size (Image, Width, Height)
*打开合适大小的窗口
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
*显示图像
dev_display (Image)
*保存图像
dump_window (WindowHandle, 'bmp', 'halcon_dump')

*图像取反    255-当前灰度值
invert_image (Image, ImageInvert)

*增加对比度
emphasize (ImageInvert, ImageEmphasize, Width, Height, 1)

 

*减小对比度
scale_image (ImageInvert, ImageScaled, 0.5, 0)

 

*增加亮度
scale_image (ImageInvert, ImageScaled1, 1, 100)

 

*减小亮度
scale_image (ImageInvert, ImageScaled2, 1, -100)

 

分段线性灰度变换算子

确定区域内的最小和最大灰度值

min_max_gray(regions需要计算的区域,image输入的图像::percent低于或高于绝对最大值或最低值的百分比:min最小灰度值,max最大灰度值,range最大最小的差值)

最大灰度值在取值范围为0到255之间展开

scale_image_max(image输入图像:imagscalemax增强后图像::)

*读取图像
read_image (Image, 'printer_chip/printer_chip_01')
*关掉窗口
dev_close_window ()
*得到图像尺寸
get_image_size (Image, Width, Height)
*打开合适大小的窗口
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
*显示图像
dev_display (Image)
*得到最大和最小灰度值
min_max_gray (Image, Image, 0, Min, Max, Range)
*扩展灰度范围
scale_image_max (Image, ImageScaleMax)
*保存图像
write_image (ImageScaleMax, 'bmp', 0, 'C:/Users/Desktop/halcon deeplearn/dddd.bmp')

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734437.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

36、k8s-Ingress的使用-搭建ingress-nginx服务和ingress-controller控制器--http代理

1、搭建ingress服务环境(安装ingress-controller控制器)--这里使用nginx做负载均衡 1、创建文件:mkdir /opt/ingresscd /opt/ingress 2、获取ingress-nginx和ingress控制器的yaml文件:##创建ingress-controller控制器的yaml文件wget https://github.com/kubernetes/ingress…

25、k8s-pod的控制器-第四种-DaemonSet(DS)-有几个node就自动创建几个pod

概念:DaemonSet类型的控制器可以保证集群中的每一台(或指定)节点上都运行一个副本、一般适用于日志收集、节点监控场景等、也就是说、如果一个pod 提供的功能是节点级别的(每个节点都需要且只需要一个)、那么这类pod就适合使用DaemonSet类型的控制器创建 DaemonSet的特点…

24、k8s-pod的控制器-第三种-HPA(Horizontal Pod Autoscaler)-自动调整pod的数量

监测pod的使用情况来做调整 概念:HPA可以获取每个pod的利用率、然后和HPA中定义的指标(如cpu、内存等使用情况)进行对比、同时计算出需要伸缩的具体值、最后实现pod数量的调整、其实HPA与之前的Deployment 控制器一样、也属于一种kubernetes资源对象、它通过追踪分析目标pod…

编译安装Haproxy

一、三种软负载均衡器的区别 1、关于三种负载均衡器的性能对比: LVS是基于内核实现的,他的性能最好; 其次是haproxy,最后是nginx 关于三种负载均衡器的代理类型对比: LVS只支持基于ip的四层代理转发,也不支持正则匹配; haproxy和nginx都可以作为四层代理和七层代理,同时…

CentOS7.9部署站点运行

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成.NET Core 6.0软件的安装,确定Linux的版本是x64还是arm64的,然后到.NET Core的官网下载6.0的SDK,并进行安装 步骤 1.进入站点目录 2.运行站点 3.配置 Nginx 站点代理 4.浏览站点 实施 1.进入站点目录[root@ml006 /]# cd /…

三大财务报表之间的勾稽关系

财务须知:三大财务报表之间的勾稽关系是怎样,附合并报表系统 三大财务报表是利润表、资产负债表、现金流量表,财务报表之间有勾稽关系,好比资产负债表是底子,利润表就是外面的面子,而现金流量表就是实实在在的日子,可以通过财务报表看出企业财务经营状况是怎么样,那他们…

MMM高可用配置

目录1.MMM的概述2.MMM的工作原理3.如何实现主主复制 1.MMM的概述 MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天,p1-18总结,总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.general-purpose vs special-pu…

SpringMVC-02-什么是SpringMVC

1、概述Spring MVC是Spring Framework的Web开发部分,是基于Java实现MVC的轻量级Web框架。官方文档:https://docs.spring.io/spring-framework/docs/4.3.24.RELEASE/spring-framework-reference/html/ 中文官方文档:https://www.w3cschool.cn/spring_mvc_documentation_lines…

视图控制器UINavigationController的介绍与基本使用

UINavigationController 是 iOS 中用于管理视图控制器层次结构的一个重要组件,通常用于实现基于堆栈的导航。它提供了一种用户界面,允许用户在视图控制器之间进行层次化的导航,例如从列表视图到详细视图。 UINavigationController 的主要功能管理视图控制器堆栈:使用一个堆…

拉普拉斯网格变形实现

因为课题需要,除了RBF还做了一个Laplace网格变形,其他大佬已经把原理写的很详细了,我就简单介绍一下公式,主要还是写写实现过程。过程同样参考了大佬的部分代码,而且实现的时候刚开始敲代码不久,所以有点乱QAQ。 首先,计算离散拉普拉斯坐标,网格上的点vi的拉普拉斯坐标…

文本三剑客之grep和awk

文本三剑客之grep和awk 目录文本三剑客之grep和awk 一、grep命令 grep命令的语法:grep[选项]...查找条件 目标文件命令 作用-m数字 多个匹配只取第一个-v 取反-i 忽略大小写-n 显示匹配的行号-c 统计匹配的行数-o 仅显示匹配到的字符串-A 数字 匹配后几行-B 数字 匹配前几行-C…

shell之条件测试语句

shell之条件测试语句 目录shell之条件测试语句一、test命令或[]中括号判断1、test命令2、[]中括号2.1 整数值比较[]2.2 实例操作2.2.1 查看系统内存是否超出预定值2.2.2 比较两个数的大小2.3 字符串比较2.3.1 案例:判断字符串是否相同2.3.2 案例:判断字符串是否为空2.4 逻辑测…

ikbc poker 2说明书

Poker II电子版说明书这是带6个dip开关,type-c接口,背后有理线槽支持侧向出线的一款poker。背后的金属铭牌型号为Poker Ⅱ。ikbc官网已经没有poker相关的内容了,说明书固件都无从下载。这份电子版说明书是找客服要的,这里存一下以作备份。原文档链接:ikbc_poker_II_说明书…

Django数据库

一、MySQL驱动程序安装 我们使用Django来操作MySQL,实际上底层还是通过python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装…

最后两次oop作业总结

1.前言 最后两次作业(即第七八次作业)大题目都是家居强电电路模拟程序,每次作业分别给了一个礼拜的时间去完成,题量较少,难度逐渐升高,以下为依次对两周题目集的知识点,题量和难度进行概述:第六次作业: 第六次作业只有一道题 家居强电电路模拟程序3,题目大概是输入设…

日志采集/分析

目录EFK1. 日志系统2. 部署ElasticSearch2.1 创建handless服务2.2 创建sts3. 部署kibana4. 部署ilogtail(docker-compose)4.1 编写docker-compose4.2 配置ilogtail采集4.3 查看容器采集的日志4.4 采集容器标准输出日志(可选)4.5 查看采集的容器日志5. 部署kafka5.1 kafka介绍…

AOD始终显示时间和信息(Dream)简析

AOD始终显示时间和信息(Dream)简析DreamManagerService启动在SystemServer的startOtherServices方法中会启动DreamManagerService服务这里是调用SystemServiceManager的startService方法显然,在SystemServiceManager的startService方法中首先将要启动的系统服务添加到其mSer…

操作系统——学习笔记(2)CPU虚拟化

学习黑皮书的一些呆瓜行为hhhhh