图像采集和二值化等处理

* Image Acquisition : Code generated by Image Acquisition
open_framegrabber ('USB3Vision', , , , , , , 'progressive', -, 'default', -, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', , -, AcqHandle)
grab_image_start (AcqHandle, -)
dev_close_window ()
dev_open_window (, , , , 'black', WindowHandle)
* 不是以填充的形式显示,而是以轮廓的形式显示!
* dev_set_draw ('margin')
while (true)
grab_image_async (Image, AcqHandle, -)
* Image Acquisition : Do something
* rgb转灰度
rgb1_to_gray (Image, GrayImage)
* 灰度显示
dev_display (GrayImage)
* 二值化 打开灰度直方图
threshold (GrayImage, Regions, , )
* 连接 区域内的连通区域
connection (Regions, ConnectedRegions)
* 有时候部分连通区域有孔洞,用fill_up进行填充
* fill_up (ConnectedRegions, RegionFillUp)
* 选择特定图像 打开特征直方图
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', , )
* 区域中心坐标
area_center (SelectedRegions, Area, Row, Column)
* 显示以上信息
disp_message (WindowHandle, '面积:' + Area + '坐标:' + Row + ',' + Column, 'window', , , 'blue', 'true')
endwhile
close_framegrabber (AcqHandle)

PS:有时候一个区域select_shape不出来的时候,可以用特征直方图的 多个区域  与 /  或 来实现

数组和文件操作

* ***************************************
* 思路决定出路,方向导论 方法论
* ***************************************
tuple := [, , , , ]
Number := |tuple|
SingleElement := tuple[]
part := tuple[:]
copy := tuple[:|tuple|-] * 读图
read_image (Image, 'fabrik')
* 区域分割
regiongrowing (Image, Regions, , , , )
* 区域数量
count_obj (Regions, Number) open_file ('D:/text1.txt', 'output', FileHandle)
for i := to Number by
* 选择第i块区域
select_obj (Regions, ObjectSelected, i)
* 计算第i块的面积
area_center (ObjectSelected, Area, Row, Column)
* 写文件
fwrite_string (FileHandle, i + ' ' + Area)
* 创建换行符 清除输出缓冲区
fnew_line (FileHandle)
endfor
close_file (FileHandle) open_file ('D:/text2.txt', 'output', FileHandle)
* select_obj (Regions, ObjectSelected, )
* 计算所有块的面积
area_center (Regions, Area, Row, Column)
fwrite_string (FileHandle, Area + ' ')
fnew_line (FileHandle)
close_file (FileHandle)

图片加载和保存的方法

* ****************************
* 图片加载和保存的方法
* .尽量用.jpg,不要有.png的文件
* **************************** * Ctrl+R
read_image (Image01, 'E:/Halcon/Halcon_Study/MyImage/瓶盖.jpg')
* 单步调试/从不 的时候,需要显示调用dev_display
dev_display (Image01) * 手动读图
* 但两幅图的格式似乎不能一样
read_image (Image02, ['E:/Halcon/Halcon_Study/MyImage/瓶盖.jpg','E:/Halcon/Halcon_Study/MyImage/棋盘标定.bmp']) * 相机助手/选择文件 读图
* Image Acquisition : Code generated by Image Acquisition
read_image (Image03, 'E:/Halcon/Halcon_Study/MyImage/硬币.jpg') * 相机助手/选择文件路径 读图
* 遍历整个文件夹的图片
* Image Acquisition : Code generated by Image Acquisition
list_files ('E:/Halcon/Halcon_Study/MyImage', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := to |ImageFiles| - by
read_image (Image, ImageFiles[Index])
* Image Acquisition : Do something
endfor * 相机助手的自动采集图像
* Image Acquisition : Code generated by Image Acquisition
open_framegrabber ('USB3Vision', , , , , , , 'progressive', -, 'default', -, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', , -, AcqHandle)
grab_image_start (AcqHandle, -)
while (true)
grab_image_async (Image, AcqHandle, -)
* Image Acquisition : Do something
endwhile
close_framegrabber (AcqHandle) * 保存图像
write_image (Image, 'tiff', , 'E:/Halcon/Halcon_Study/MyImage')

图像预处理

滤波

5.1 Arithmetic
. abs_image
功能:计算一个图像的绝对值(模数)。
. add_image
功能:使两个图像相加。
. div_image
功能:使两个图像相除。
. invert_image
功能:使一个图像反像。
. max_image
功能:按像素计算两个图像的最大值。
. min_image
功能:按像素计算两个图像的最大小值。
. mult_image
功能:使两个图像相乘。
. scale_image
功能:为一个图像的灰度值分级。
. sqrt_image
功能:计算一个图像的平方根。
. sub_image
功能:使两个图像相减。 5.2 Bit
. bit_and
功能:输入图像的所有像素的逐位与。
. bit_lshift
功能:图像的所有像素的左移。
. bit_mask
功能:使用位掩码的每个像素的逻辑与。
. bit_not
功能:对像素的所有位求补。
. bit_or
功能:输入图像的所有像素的逐位或。
. bit_rshift
功能:图像的所有像素的右移。
. bit_slice
功能:从像素中提取一位。
. bit_xor
功能:输入图像的所有像素的逐位异或。 5.3 Color
. cfa_to_rgb
功能:把一个单通道颜色滤波阵列图像变成RGB图像。
. gen_principal_comp_trans
功能:计算多通道图像的主要部分分析的转换矩阵。
. linear_trans_color
功能:计算多通道图像的颜色值的一个仿射转换。
. principal_comp
功能:计算多通道图像的主要部分。
. rgb1_to_gray
功能:把一个RGB图像转变成一个灰度图像。
. rgb3_to_gray
功能:把一个RGB图像转变成一个灰度图像。
. trans_from_rgb
功能:把一个图像从RGB颜色空间转变成任意颜色空间。
. trans_to_rgb
功能:把一个图像从任意颜色空间转变成RGB颜色空间。 5.4 Edges
.close_edges
功能:使用边缘幅值图像消除边缘缺陷。
. close_edges_length
功能:使用边缘幅值图像消除边缘缺陷。
. derivate_gauss
功能:用高斯派生物对一个图像卷积。
. diff_of_gauss
功能:近似高斯的拉普拉斯算子。
. edges_color
功能:使用Canny、Deriche或者_Shen_滤波器提取颜色边缘。
. edges_color_sub_pix
功能:使用Canny、Deriche或者_Shen_滤波器提取子像素精确颜色边
缘。
. edges_image
功能:使用Deriche、_Lanser、Shen或者_Canny滤波器提取边缘。
. edges_sub_pix
功能:使用Deriche、_Lanser、Shen或者_Canny滤波器提取子像素精
确边缘。
. frei_amp
功能:使用Frei-Chen算子检测边缘(幅值)。
. frei_dir
功能:使用Frei-Chen算子检测边缘(幅值和相位)。
. highpass_image
功能:从一个图像提取高频成分。
. info_edges
功能:在edges_image估计滤波器的宽度。
. kirsch_amp
功能:使用Kirsch算子检测边缘(幅值)。
. kirsch_dir
功能:使用Kirsch算子检测边缘(幅值和相位)。
. laplace
功能:使用有限差计算拉普拉斯算子。
. laplace_of_gauss
功能:高斯的拉普拉斯算子。
. prewitt_amp
功能:使用Prewitt算子检测边缘(幅值)。
. prewitt_dir
功能:使用Prewitt算子检测边缘(幅值和相位)。
. Roberts
功能:使用Roberts滤波器检测边缘。
. robinson_amp
功能:使用Robinson算子检测边缘(幅值)。
. robinson_dir
功能:使用Robinson算子检测边缘(幅值和相位)。
. sobel_amp
功能:使用Sobel算子检测边缘(幅值)。
. sobel_dir
功能:使用Sobel算子检测边缘(幅值和相位)。 5.5 Enhancement
. adjust_mosaic_images
功能:全景图像的自动颜色更改。
. coherence_enhancing_diff
功能:执行一个图像的一个一致性增强扩散。
. emphasize
功能:增强图像对比度。
. equ_histo_image
功能:图像的柱状图线性化。
. illuminate
功能:增强图像对比度。
. mean_curvature_flow
功能:把平均曲率应用在一个图像中。
. scale_image_max_
功能:最大灰度值在0到255范围内。
. shock_filter
功能:把一个冲击滤波器应用到一个图像中。 5.6 FFT
. convol_fft
功能:用在频域内的滤波器使一个图像卷积。
. convol_gabor
功能:用在频域内的一个Gabor滤波器使一个图像卷积。
. correlation_fft
功能:计算在频域内的两个图像的相互关系。
. energy_gabor
功能:计算一个两通道图像的能量。
. fft_generic
功能:计算一个图像的快速傅里叶变换。
. fft_image
功能:计算一个图像的快速傅里叶变换。
. fft_image_inv
功能:计算一个图像的快速傅里叶逆变换。
. gen_bandfilter
功能:生成一个理想带通滤波器。
. gen_bandpass
功能:生成一个理想带通滤波器。
. gen_derivative_filter
功能:在频域内生成一个倒数滤波器。
. gen_filter_mask
功能:在空域内存储一个滤波器掩码作为实时图像。
. gen_gabor
功能:生成一个Gabor滤波器。
. gen_gauss_filter
功能:在频域内生成一个高斯滤波器。
. gen_highpass
功能:生成一个理想高通滤波器。
. gen_lowpass
功能:生成一个理想低通滤波器。
. gen_sin_bandpass
功能:用正弦形状生成一个带通滤波器。
. gen_std_bandpass
功能:用高斯或者正弦形状生成一个带通滤波器。
. optimize_fft_speed
功能:使FFT的运行时间最优化。
. optimize_rft_speed
功能:使实值的FFT的运行时间最优化。
. phase_deg
功能:返回用角度表示的一个复杂图像的相位。
. phase_rad
功能:返回用弧度表示的一个复杂图像的相位。
. power_byte
功能:返回一个复杂图像的功率谱。
. power_ln_
功能:返回一个复杂图像的功率谱。
. power_real
功能:返回一个复杂图像的功率谱。
. read_fft_optimization_data
功能:从一个文件中下载FFT速度最优数据。
. rft_generic
功能:计算一个图像的实值快速傅里叶变换。
. write_fft_optimization_data
功能:把FFT速度最优数据存储在一个文件中。 5.7 Geometric-Transformations
. affine_trans_image
功能:把任意仿射2D变换应用在图像中。
. affine_trans_image_size
功能:把任意仿射2D变换应用在图像中并且指定输出图像大小。
. gen_bundle_adjusted_mosaic
功能:把多重图像合成一个马赛克图像。
. gen_cube_map_mosaic
功能:创建球形马赛克的6方位图像。
. gen_projective_mosaic
功能:把多重图像合成一个马赛克图像。
. gen_spherical_mosaic
功能:创建一个球形马赛克图像。
. map_image
功能:把一个一般变换应用于一个图像中。
. mirror_image
功能:镜像一个图像。
. polar_trans_image
功能:把一个图像转换成极坐标。
. polar_trans_image_ext
功能:把一个图像中的环形弧转变成极坐标。
. polar_trans_image_inv
功能:把极坐标中的图像转变成直角坐标。
. projective_trans_image
功能:把投影变换应用于一个图像中。
. projective_trans_image_size
功能:把投影变换应用于一个图像中并且指定输出图像的大小。
. rotate_image
功能:以一个图像的中心为圆心旋转。
. zoom_image_factor
功能:把一个图像缩放规定因子倍。
. zoom_image_size
功能:把一个图像缩放到规定大小。 5.8 Inpainting
. harmonic_interpolation
功能:对一个图像区域执行谐波插值。
. inpainting_aniso
功能:通过各向异性扩散执行图像修复。
. inpainting_ced
功能:通过一致性增强扩散执行图像修复。
. inpainting_ct
功能:通过连贯传送执行图像修复。
. inpainting_mcf
功能:通过水平线平滑执行图像修复。
. inpainting_texture
功能:通过结构传导执行图像修复。 5.9 Lines
. bandpass_image
功能:使用带通滤波器提取边缘。
. lines_color
功能:检测色线和它们的宽度。
. lines_facet
功能:使用面模型检测线。
. lines_gauss
功能:检测线和它们的宽度。 5.10 Match
. exhaustive_match
功能:模板和图像的匹配。
. exhaustive_match_mg
功能:在一个分辨率塔式结构中匹配模板和图像。
. gen_gauss_pyramid
功能:计算一个高斯金字塔。
. monotony
功能:计算单一操作。 5.11 Misc
. convol_image
功能:用一个任意滤波掩码对一个图像卷积。
. expand_domain_gray
功能:扩大图像区域并且在扩大的区域中设置灰度值。
. gray_inside
功能:对图像中的每一点在图像边界的任意路径计算尽可能低的灰度
值。
. gray_skeleton
功能:灰度值图像的细化。
. lut_trans
功能:使用灰度值查询表转换一个图像。
. symmetry
功能:沿一行的灰度值的对称性。
. topographic_sketch
功能:计算一个图像的地理原始草图。 5.12 Noise
. add_noise_distribution
功能:向一个图像添加噪声。
. add_noise_white
功能:向一个图像添加噪声。
. gauss_distribution
功能:产生一个高斯噪声分布。
. noise_distribution_mean
功能:测定一个图像的噪声分布。
. sp_distribution
功能:产生一个椒盐噪声分布。 5.13 Optical-Flow
. optical_flow_mg
功能:计算两个图像之间的光流。
. unwarp_image_vector_field
功能:使用一个矢量场来展开一个图像。
. vector_field_length
功能:计算一个矢量场的矢量长度。 5.14 Points
. corner_response
功能:在图像中寻找角点。
. dots_image
功能:在一个图像中增强圆形点。
. points_foerstner
功能:使用Förstner算子检测关注点。
. points_harris
功能:使用Harris算子检测关注点。
. points_sojka
功能:使用Sojka算子找出角点。
5.15 Smoothing
. anisotrope_diff
功能:通过保边各向异性扩散平滑一个图像。
. anisotropic_diffusion
功能:对一个图像执行各向异性扩散。
. binomial_filter
功能:使用binomial滤波器平滑一个图像。
. eliminate_min_max
功能:在空域内平滑一个图像来抑制噪声。
. eliminate_sp
功能:用中值替代阀值外的值。
. fill_interlace
功能:插补两个半个视频图像。
. gauss_image
功能:使用离散高斯函数平滑图像。
. info_smooth
功能:平滑滤波器smooth_image的信息。
. isotropic_diffusion
功能:对一个图像执行各向同性扩散。
. mean_image
功能:通过平均平滑一个图像。
. mean_n
功能:几个通道的平均灰度值。
. mean_sp
功能:抑制椒盐噪声。
15. median_image
功能:使用不同级别掩码的中值滤波
. median_separate_
功能:使用矩形掩码的离散中值滤波。
. median_weighted
功能:使用不同级别掩码的加权中值滤波。
. midrange_image
功能:计算掩码内最大和最小值的平均。
. rank_image
功能:通过一个任意等级掩码平滑一个图像。
. sigma_image
功能:使用sigma滤波器的非线性平滑。
. smooth_image
功能:使用递归滤波器平滑一个图像。
. trimmed_mean
功能:使用任意等级掩码平滑一个图像。
5.16 Texture
. deviation_image
功能:计算矩形窗口内的灰度值的标准偏差。
. entropy_image
功能:计算矩形窗口内的灰度值的熵。
. texture_laws
功能:使用一个Laws文本滤波器过滤一个图像。
5.17 Wiener-Filter
. gen_psf_defocus
功能:产生一个均匀散焦模糊的脉冲相应。
. gen_psf_motion
功能:产生一个(线性)运动模糊的脉冲相应。
. simulate_defocus
功能:对一个图像的均匀散焦模糊进行仿真。
. simulate_motion
功能:(线性)运动模糊的仿真。
. wiener_filter
功能:通过Wiener滤波进行图像恢复。
. wiener_filter_ni
功能:通过Wiener 滤波进行图像恢复。

【halcon】学习记录的更多相关文章

  1. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  2. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  3. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  4. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  5. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  6. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  7. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

  8. UWP学习记录8-设计和UI之控件和模式5

    UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...

  9. UWP学习记录7-设计和UI之控件和模式4

    UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...

  10. UWP学习记录6-设计和UI之控件和模式3

    UWP学习记录6-设计和UI之控件和模式3 1.按钮 按钮,响应用户输入和引发 Click 事件的控件. 使用<Button>就能创建一个按钮控件了.按钮是 ContentControl, ...

随机推荐

  1. 【译】2分钟介绍Rx

    原文地址:https://medium.com/@andrestaltz/2-minute-introduction-to-rx-24c8ca793877 翻译去掉了一些口水话(⊙o⊙) 诸位应该已经 ...

  2. OpenID Connect Core 1.0(二)ID Token

    2.ID Token(ID Token) OpenID Connect主要是对OAuth 2.0 能够使得终端用户通过ID Token的数据结构进行验证.当客户端和潜在的其他请求声明,ID Token ...

  3. Oracle 备份恢复实例

    Oracle 备份恢复实例:三思笔记 1 shutdown abort 系统归档模式,有备份 create table xx as select * from emp; update xx set e ...

  4. DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池

    DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池 liuyuhang原创,未经允许禁止转载  系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...

  5. 单文件版本的netframework的net core 2.1

    如果你还在用net4.5,如果你还在用netframework,又想使用netcore2.1的库或者功能,又觉得nuget动不动就好大,可以试试下面的这个. https://pan.baidu.com ...

  6. 05.odoo12开源框架学习

    博客为日常工作学习积累总结: 1.odoo12学习 参考博客:https://alanhou.org/centos-odoo-12/ CentOS 7快速安装配置 Odoo 12 添加新用户必做,不然 ...

  7. jQuery 常用核心方法

    jQuery 常用核心方法 .each() 遍历一个jQuery对象,为每个匹配元素执行一个函数 $('p').each(function(idx,node){ $(node).text(idx + ...

  8. 课时133.margintop失效原因(理解)

    我们之前讲过如果只有子元素设置了margin top而父元素没有边框则会跟着被顶下来的. 而我们怎么解决这个问题呢? 就是给父元素设置一个边框 而为什么我们在第二个浮动的盒子设置边框没有用呢?应为第一 ...

  9. Python-调用系统指令小记

    import subprocess def exec_command(cmd, log_path, **kwargs): with open(log_path, 'w') as f: p = subp ...

  10. 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题

    这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...