3. gen_ellipse创建一个椭圆。
4. gen_empty_region创建一个空的区域。
5. gen_grid_region根据行或像素数创建一个区域_。 6. gen_random_region创建一个随机区域。
7. gen_random_regions创建随机区域如圆周,矩形和椭圆。 8. gen_rectangle1创建一个与坐标轴平行的长方形。 9. gen_rectangle2创建任意方向的矩形。
10. gen_region_contour_xld从XLD元组中创建一个区域。 11. gen_region_histo将一个直方图转换为一个区域。
12. gen_region_hline将Hesse 正规形状中描述的输入线存储为区域。 13. gen_region_line将输入线以区域形式存储。
14. gen_region_points将个别的像素存储为图像区域。
15. gen_region_polygon将一个多边形存储为一个目标图像。
16. gen_region_polygon_filled将一个多边形存储为一个已填充区域。 17. gen_region_polygon_xld创建一个XLD多边形中的区域。 18. gen_region_runs创建一个扫描宽度编码中的图像区域。 19. label_to_region提取一幅图像中灰度值相同的区域。 14.3 Features
1. area center一个区域的面积(大小)和中心。
2. circularity影响一个区域与圆的相似度的形状系数。 3. compactness影响一个区域致密度的形状系数。 4. connect and_holes连接部分和中断的数目。 5. contlength描述一个区域轮廓(contour)的长度。 6. convexity影响一个区域凸性的形状系数。
7. diameter region一个区域两个边界点的最大距离。 8. eccentricity来源于椭圆参数的形状系数。 9. elliptic axis相似椭圆的参数。 10.euler number计算Euler数目。 11. find neighbors搜寻直接邻域。
12. get region_index包括给定像素在内的所有的区域的索引。 13. get region_thickness查询主轴附近区域的宽度(厚度)。 14. hamming distance两个区域间的汉明距离。
15. hamming_distance_norm两个区域间的归一化汉明距离。 16. inner circle一个区域内部最大的圆周。
17. inner_rectangle1一个区域内部最大的矩形。 18. moments_region_2nd区域的某时刻几何特性,。 19. moments_region_2nd invar区域的某时刻几何特性。 20. moments_region_2nd rel_invar计算相关时刻参数。 21. moments_region 3rd区域的某时刻几何特性。
22. moments_region_3rd invar区域的某时刻几何特性。 23. moments_region_central区域的某时刻几何特性。
24. moments_region_central_invar区域的某时刻几何特性。 25. orientation_region一个区域的定向。
26. rectangularity影响一个区域矩形相似度的形状系数。
27. roundness轮廓中获取的形状系数。
28.runlength_distribution一个区域扫描宽度编码所需的顺串的分配。 29. runlength_features区域扫描宽度编码的特征值。
30. select_region_point选择包括给定像素在内的所有区域。 31. select_region_spatial讨论区域的关联性。 32. select_shape根据图形特征选择区域。
33. select_shape_proto选择彼此有某种关系的区域。 34. select_shape_std选择给定形状的区域。 35. smallest_circle一个区域的最小周长。
36. smallest_rectangle1平行于坐标轴的包围某区域的矩形。 37. smallest_rectangle2任意方向包围某区域的最小矩形。
38. spatial_relation根据坐标轴方向左、右、上、下排列相关区域。 14.4 Geometric-Transformations
1. affine_trans_region对区域进行任意的二维变换。
2. mirror_region反馈一个平行于X或Y坐标轴的区域。 3. move_region对区域进行变换。
4. polar_trans_region将一个环状弧内的区域转换为极坐标。
5. polar_trans_region_inv将极坐标中的区域转换为笛卡尔坐标中的区域。 6. projective_trans_region对一个区域进行射影变换。 7. transpose_region翻译关于一个点的一个区域。 8. zoom_region缩放一个区域。 14.5 Sets
1. complement返回一个区域的补码。
2. difference计算两个区域的差距(不同)。 3. intersection计算两个区域的交集。
4. symm_difference计算两个区域对称差异。 5. union1返回所有输入区域的并集。 6. union2返回两个区域的并集。 14.6 Tests
1. test_equal_region检测两个目标区域是否相同。
2. test_subset_region检测一个区域是否包含在另一个区域中。 14.7 Transformation
1. background_seg决定给定区域背景相连的部分。 2. clip_region将一个区域修改为矩形。 3. clip_region rel根据大小修改一个区域。 4. connection计算一个区域相连接的部分。
5. distance transform计算一个区域的距离变换。 6. eliminate runs消除一个给定宽度的顺串。
7. expand region填充区域间的间隙或分离互相重叠的区域。 8.fill up填充区域中的中断(裂缝等)。
9. fill_up_shape填充拥有给定图形特征区域的中断。
10. hamming_change_region创建一个有给定汉明距离的区域。 11. interjacent利用给定区域分割图像。
12. junctions_skeleton找到框架中的结点和终点。
13. merge_regions_line_scan从行扫描图像合并区域。
14.partition dynamic在较小垂直范围的位置水平分割一个区域。 15. partition_dynamic将一个区域分割为等大的矩形。 16. rank_region给对区域的操作归类。
17. remove noise region去除一个区域内的噪声。 18. shape_trans改变一个区域的形状。 19. skeleton计算一个区域的框架。 20. sort region根据相邻位置归类区域。
21. split_skeleton_lines用一个像素宽,没有分支的线来分离线。 22. split_skeleton_region用一个像素宽,没有分支的区域来分离线。
Halcon学习(一)读取多张图片
第一种方法 ImagePath:=[]
ImagePath[0]:='E:/images1/a000.bmp' ImagePath[1]:='E:/images1/a001.bmp' ImagePath[2]:='E:/images1/a002.bmp' ImagePath[3]:='E:/images1/a003.bmp' ImagePath[4]:='E:/images1/a004.bmp' ImagePath[5]:='E:/images1/a005.bmp' ImagePath[6]:='E:/images1/a006.bmp' ImagePath[7]:='E:/images1/a007.bmp' for i:=0 to 7 by 1
read_image(Image,ImagePath[i]) endfor 2种方法
for i:=0 to 7 by 1
read_image(Image,'E:/images1/'+i+'.bmp') endfor
第三种方法 NumImages :=8
for I :=1 to NumImages-1 by 1
read_image (Image, ' E:/images1/a ' + I$'03d') endfor
第四种方法 (读取一个文件夹下的所有图片)
【助手】》【打开新的image acquisition 】》【图像助手】》【选择路径】》【代码生成】》【插入代码】
Halcon学习(二)图像获取与相关参数
(2012-12-16 23:29:28)
图像获取程序例1.
1.set_system( : : SystemParameter, Value : ) 设置系统参数
2.open_framegrabber ( : : Name, HorizontalResolution,VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn,Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger,CameraType, Device, Port, LineIn : AcqHandle ) 打开并配置图像采集设备 输入控制:
Name:图像采集设备的名称
HorizontalResolution和VerticalResolution:预期的图像采集接口的水平分辨率和垂直分辨率 ImageWidth和ImageHeight:指预期图像的宽度部分和高度部分。 StartRow和StartColumn:指显示预期图像的开始坐标 Field:预期图像是一半的图像或者是完整图像 BitsPerChannel:每像素比特数和图像通道
ColorSpace:获取图像的输出形式{gray、raw、rgb、yuv、default} Generic:通用参数与设备细节部分的具体意义。 ExternalTrigger:是否有外部触发 CameraType:使用相机的类型
Device:图像获取设别连接到的设备 Port:图像获取设别连接到的端口 LineIn :相机输入的多路转接器 AcqHandle:图像获取设备的Handle 3.grab_image( : Image : AcqHandle : )
从AcqHandle指定的图像获取设备中获取图像,输出为获得的图像 4.set_framegrabber_param( : : AcqHandle, Param, Value : ) 为AcqHandle指定的图像获取设备设置参数
Param : 'color_space', 'continuous_grabbing', 'external_trigger', 'grab_timeout', 'image_height', 'image_width', 'port', 'start_column', 'start_row', 'volatile'
注意:能够设置的参数不仅仅是上述建议的参数。也可以一次设定多个参数值。 例如:set_framegrabber_param (AcqHandle, 'port', Port0)
set_framegrabber_param (AcqHandle, ['image_width','image_height'], [256, \\256]) 对DaHengCams能设置的常用额外参数包括: 'adc_level' ---设置A/D转换的级别; 'color_space' ---设置颜色空间 'gain' ---设置相机增益
'grab_timeout' ---设置采集超时终止的时间
'resolution' ---设定相机的采相分辨率,MOD0为最大的分辨率。 'shutter' ---设定相机的曝光时间。
'shutter_unit' ---设定相机曝光时间的单位。
'white_balance' ---相机是否打开白平衡模式,默认为关闭白平衡
5.info_framegrabber( : : Name, Query : Information, ValueList)查询指定的图像采集接口的信息。 Name为图像采集设备的名称 Query为需要查询的参数名称 Information是指输出的文本信息
ValueList为该图像采集接口的参数值
6.get_image_pointer1(Image : : : Pointer, Type, Width, Height)获取一个图像通道的指针,输出指针以及图像类型和尺寸。
7.dev_set_part( : : Row1, Column1, Row2, Column2 : )修改图像显示部分的尺寸。 8.close_all_framegrabbers( : : : )关闭图像采集设备。 9.count_seconds( : : : Seconds)测试算子实行时间 * general configuration of HDevelop
set_system ('do_low_error', 'true') //设置系统参数,在输出窗口只立即显示图像// dev_update_window ('off') stop ()
* step 1: connect to the image acquisition device
* -> Please adapt the following lines for your own image acquisition device. AcqName := 'DaHengCam'
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, 'default', -1, 'gray', -1, 'false', 'ntsc', 'default', -1, -1, AcqHandle) //打开并配置图像采集设备// stop ()
* step 2: grab a first image and adjust the window size
grab_image (Image, AcqHandle) //获取图像//
get_image_pointer1 (Image, Pointer, Type, Width, Height) //获取图像通道指针// dev_close_window ()
dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle) //开新窗口// dev_set_part (0, 0, Height-1, Width-1) dev_display (Image) stop ()
* step 3: grab and process images in a loop (exit with left mouse button)
dev_open_window (0, Width/2 + 8, Width/2, Height/2, 'black', WindowHandleProcess) dev_set_colored (12)
dev_open_window (Height/2 + 68, 0, Width/2, Height/16, 'light gray', WindowHandleButton) dev_set_part (0, 0, Height/16 - 1, Width/2 -1)
write_string (WindowHandleButton, ' click here with left mouse button to exit loop')//写字符 进入窗口// dev_set_window (WindowHandle) dev_set_part (0, 0, Height-1, Width-1) Button := 0
while (Button # 1)
grab_image (Image, AcqHandle) dev_set_window (WindowHandle) dev_display (Image)
* -> process image (segment with an automatically determined threshold)
auto_threshold (Image, Regions, 4)//高斯平滑图像并利用直方图分割图像输出区域// connection (Regions, ConnectedRegions)2.Insert : 对数组中的某一个值进行赋值。 Tuple1 := [1,0,3,4,5,6,7,8,9] Tuple1[3]:=2
显示结果为:[1, 0, 3, 2, 5, 6, 7, 8, 9],即对索引3后面元素,数组Tuple1中第4个元素赋值2. example: