halcon concat函数
HALCON算子函数整理13-14Object-Region

HALCON算子函数整理13-14Object-RegionHALCON算子函数——Chapter 13 : Object 13.1 Information 1. count_obj功能:统计一个元组中的对象。
2. get_channel_info功能:一幅目标图像组成部分的信息。
3. get_obj_class功能:一副目标图像类的名称。
4.test_equal_obj功能:比较目标图像的平等性。
5. test_obj_def功能:测试目标是否被删除。
13.2 Manipulation1. clear_obj功能:将一个对象的图标从HALCON数据库中删除。
2. concat_obj功能:连接两个目标元组的图标。
3. copy_obj功能:复制一个HALCON数据库中对象的图标_。
4. gen_empty_obj功能:创建一个空的目标元组。
5.integer_to_obj功能:将一个整型数转换为一个图标。
6. obj_to_integer功能:将一个图标转换为一个整型数。
7. select_obj功能:从一个目标元组中选择目标。
HALCON算子函数——Chapter 14 : Regions 14.1 Access 1. get_region_chain功能:一个对象的轮廓(contour)作为链式码。
2. get_region_contour功能:查询一个目标的轮廓(contour)。
3. get_region_convex功能:查询突起的外表作为轮廓(contour)。
4. get_region_points功能:查询一个区域的像素数。
5. get_region_polygon功能:用一个多边形近似获取区域。
6. get_region_runs功能:查询一个区域的扫描宽度编码。
14.2 Creation1. gen_checker_region功能:创建一个方格式区域。
2. gen_circle功能:创建一个圆周。
halcon常用运算符

halcon常⽤运算符1.Assign算⼦:assign(Input, Result),对变量以及表达式或数组赋值assign(sin(x) + cos(y), u)which is displayed in the program window as: 程序窗等价为u := sin(x) + cos(y)Tuple1 := [1,0,3,4,5,6,7,8,9] // 对数组进⾏初始化Val := sin(1.2) + cos(1.2) // 对某⼀个值进⾏赋值Tuple2 := [] // 数组定义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:read_image (Mreut, 'mreut') //读⼊图像threshold (Mreut, Region, 190, 255) //阈值化,输出阈值在190-255的RegionsAreas := [] //定义数组Areasfor Radius := 1 to 50 by 1 //循环dilation_circle (Region, RegionDilation, Radius) //利⽤半径为Radius的圆对Region进⾏膨胀运算,输出 RegionDilation,输出形式仍然为Region。
area_center (RegionDilation, Area, Row, Column) //输出区域的⾯积和中⼼像素坐标Areas[Radius-1] := Area //对数组Areas的第Radius-1个元素进⾏赋值endfor3.基本数组操作极其对应的算⼦t := [t1,t2] t1,t2连接成新的数组对应算⼦:tuple_concati := |t| 得到数组长度 tuple_lengthv := t[i] 选取第i个元素0<= i < |t| tuple_selectt := t[i1:i2] 选取i1到i1的元素 tuple_select_ranget := subset(t,i) 选取数组t中的第i个元素 tuple_selectt := remove(t,i) 去除数组t中的第i个元素 tuple_removei := find(t1,t2) 找到t2数组在t1数组中出现位置索引(or -1 if no match) tuple_findt := uniq(t) 在t数组中把连续相同的值只保留⼀个 tuple_uniq4.创建数组(1)gen_tuple_const函数 tuple := gen_tuple_const(100,4711) //创建⼀个具有100个元素的,每个元素都为4711的数据 tuple_new := gen_tuple_const(|tuple_old|,4711) //创建⼀个和原来数据长度⼀样的数据 上⾯的函数也可以通过如下表达式实现:tuple_new := (tuple_old * 0) + 4711(2)当数组中的元素不同时,需要⽤循环语句对数组中的每⼀个元素赋值 例如:tuple := [] //创建空数组 for i := 1 to 100 by 1 //建⽴步长为1的循环 tuple := [tuple,i*i] //将i⽅的值赋给数组的第i个元素 endfor //循环结束。
利用halcon进行图像拼接的基本教程

一、什么是图像拼接(略)二、拼接的基本过程使用halcon自带的例子来说明这个过程打开拼接下面的mosaicking.hdv(一)镜头校正CamParam := [0.0121693,-2675.63,7.40046e-006,7.4e-006,290.491,258.887,640,480] change_radial_distortion_cam_par ('adaptive', CamParam, 0, CamParOut)(二)获得图像* Read in the images and show them one-by-one.for J := 1 to 10 by 1read_image (Image, ImgPath+ImgName+J$'02')if (EliminateRadialDistortions)change_radial_distortion_image (Image, Image, Image, CamParam, CamParOut)endifconcat_obj (Images, Image, Images)dev_display (Image)disp_message (WindowHandle1, 'Image '+J$'d', 'window', -1, -1, 'green', 'false')wait_seconds (0.5)endfor(三)图像配准tile_images_offset (Images, TiledImage, [0,0,0,0,0,500,500,500,500,500],[0,660,1320,1980,2640,0,660,1320,1980,2640], [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1], [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1], [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1], [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1], 3280, 980)(四)图像拼接,获得全军图像gen_projective_mosaic (Images, MosaicImage, StartImage, From, To, ProjMatrices, StackingOrder,'false', MosaicMatrices2D)除了镜头校正以外,其他几个函数在拼接中是常见的,通过查看帮助获得了解。
Halcon算子笔记3_相机标定+矫正图像

Map_image.hdev: 矫正图像*关闭窗口dev_close_window ()dev_close_window ()*打开指定大小、颜色背景的窗口dev_open_window (0, 0, 768/2, 576/2, 'black', WindowHandle1)dev_update_pc ('off')dev_update_window ('off')dev_update_var ('off')dev_update_time ('off')dev_set_draw ('margin')dev_set_line_width (3)** Calibrate the camera.(标定相机)步骤一** 标定板描述文件CaltabName := 'caltab_big.descr'* make sure that the file 'CaltabDescrName' is in the current directory,* the HALCONROOT/calib directory, or use an absolut path*初始相机参数:焦距、畸变系数Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight StartCamPar := [0.008,0,0.0000086,0.0000086,384,288,768,576]*物体在空间坐标系中的位姿数组NStartPose := []*行角点数组NRow := []*列角点数组NCol := []*X、Y、Z从标定表文件获取计算值caltab_points (CaltabName, X, Y, Z)*创建空的图像元组gen_empty_obj (Images)*图像的数目NumImages := 10*接下来for循环,依次读取、处理NumImages张图像for I := 1 to NumImages by 1*读取图像:Image得到图像数据read_image (Image, 'calib/calib-3d-coord-'+I$'02d')*将单个Image加入元组Images中concat_obj (Images, Image, Images)*显示Imagedev_display (Image)*在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值find_caltab (Image, Caltab, CaltabName, 3, 112, 5)*设置区域颜色:绿色dev_set_color ('green')*显示图像中标定板的区域dev_display (Caltab)*(核心函数:搜寻图像的原始点)在图像中找到标定板的各个角点坐标和初始位姿find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose)*设置颜色:红色dev_set_color ('red')*在窗口上圆形标记角点的位置disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,1.5))*一个图像位姿加入位姿元组NStartPose := [NStartPose,StartPose]*所有图像角点行坐标数组相连NRow := [NRow,RCoord]*所有图像角点列坐标数组相连NCol := [NCol,CCoord]endfordev_update_time ('on')disp_continue_message (WindowHandle1, 'black', 'true')stop ()** Calculate the mapping.(计算带矫正信息的图像)步骤二**(核心函数)标定相机参数,对步骤一的数据进行计算处理camera_calibration (X, Y, Z, NRow, NCol, StartCamPar, NStartPose, 'all', CamParam, NFinalPose, Errors)*生成空的对象:包含矫正映射信息的图像gen_empty_obj (Maps)*for循环一次处理一组对应的图像for NumImage := 1 to NumImages by 1* Obtain the pose of the calibration table.*获取标定出来的位姿3DPose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]*设置新的原始3D位姿set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)*(核心函数)生成带矫正映射信息的图像MapSinglegen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 'bilinear')*将单张图像加入图像元组Mapsconcat_obj (Maps, MapSingle, Maps)endfordisp_continue_message (WindowHandle1, 'black', 'true')stop ()*代码到此处:有了NumImages张标定的原图+ NumImages张带矫正映射信息的图像,*接下来While循环,一张一张的矫正图像** Map the images.(矫正图像)步骤三**窗口设置dev_open_window (0, 391, 900/2, 800/2, 'black', WindowHandle2)Button := 0NumImage := 1while (Button # 1)dev_set_window (WindowHandle1)dev_set_part (0, 0, 575, 767)dev_clear_window ()*从图像元组中选择一张图像select_obj (Images, Image, NumImage)*显示选择的图像dev_display (Image)disp_message (WindowHandle1, 'Press any mouse button to stop', 'image', -1, -1, 'black', 'true')*选择对应位置的带矫正信息的图像select_obj (Maps, MapSingle, NumImage)*(核心函数)矫正图像:原图,带矫正信息图,矫正结果图map_image (Image, MapSingle, ImageMapped)*以下为窗口、循环之类的处理,与图像处理没什么关系dev_set_window (WindowHandle2)dev_set_part (0, 0, 799, 899)dev_clear_window ()dev_display (ImageMapped)NumImage := NumImage + 1if (NumImage > NumImages)NumImage := 1endifdev_error_var (Error, 1)dev_set_check ('~give_error')get_mposition (WindowHandle1, R, C, Button)dev_error_var (Error, 0)dev_set_check ('give_error')if (Error#H_MSG_TRUE)Button := 0endifif (Button)breakendifendwhiledev_set_window (WindowHandle2) dev_close_window ()。
HALCON算子函数整理1-19章

HALCON算子函数整理1-19章halcon算子中文解释open_file(::FileName,FileType:FileHandle)创建('output'or'append')或者打开(output)文本文件fwrite_tring(::FileHandle,String:)写入tringdev_cloe_window(:::)关闭活跃的图形窗口。
read_image(:Image:FileName:);加载图片get_image_pointer1(Image:::Pointer,Type,Width,Height)获得图像的数据。
如:类型(='字节',''',uint2int2等等)和图像的尺寸(的宽度和高度)dev_open_window(::Row,Column,WidthHeight,Background:WindowHan dle)打开一个图形的窗口。
dev_et_part(::Row1,Column1,Row2,Column2:)修改图像显示的位置dev_et_draw(’fill’)填满选择的区域dev_et_draw(’margin’)显示的对象只有边缘线,dev_et_line_width(3)线宽用LineWidth指定threhold(Image:Region:MinGray,Ma某Gray:)选取从输入图像灰度值的g满足下列条件:MinGray<=g<=Ma某Gray的像素。
dev_et_colored(number)显示region是用到的颜色数目dev_et_color(::ColorName:)指定颜色connection(Region:ConnectedRegion::)合并所有选定像素触摸相互连通区fill_up(Region:RegionFillUp::)填补选择区域中空洞的部分fill_up_hape(Region:RegionFillUp:Feature,Min,Ma某:)elect_hape(Region:SelectedRegion:Feature,Operation,Min,Ma 某:)选择带有某些特征的区域,Operation是运算,如“与”“或”mallet_rectangle1(Region:::Row1,Column1,Row2,Column2)以矩形像素坐标的角落,Column1,Row2(Row1,Column2)计算矩形区域(平行输入坐标轴)dev_diplay(Object:::)显示图片dip_rectangle1(::WindowHandle,Row1,Column1,Row2,Column2:)显示的矩形排列成的。
halcon中两个数组求并集

halcon中两个数组求并集Halcon是一种强大的机器视觉软件,它提供了丰富的图像处理和分析功能。
在Halcon中,我们经常需要对数组进行操作,其中包括求并集。
本文将介绍在Halcon中如何求两个数组的并集,并探讨一些相关的应用场景。
我们需要了解Halcon中数组的表示方式。
在Halcon中,数组可以通过多种方式表示,其中最常见的是使用一维的整数数组。
我们可以使用Halcon的内置函数来创建和操作这些数组。
要求两个数组的并集,我们首先需要创建两个数组。
假设我们有两个数组A和B,它们分别包含了一些整数。
在Halcon中,我们可以使用create_array函数来创建这些数组,然后使用assign_value 函数来为数组赋值。
```HalconA := create_array(5)B := create_array(5)assign_value(A, 0, 1)assign_value(A, 1, 2)assign_value(A, 2, 3)assign_value(A, 3, 4)assign_value(A, 4, 5)assign_value(B, 0, 4)assign_value(B, 1, 5)assign_value(B, 2, 6)assign_value(B, 3, 7)assign_value(B, 4, 8)```现在我们已经创建了两个数组A和B,接下来我们需要求它们的并集。
在Halcon中,我们可以使用concat函数来实现这一操作。
concat函数可以将两个数组连接在一起,并返回一个新的数组。
```HalconC := concat(A, B)```现在,数组C中的元素包含了数组A和数组B的所有元素,即为两个数组的并集。
我们可以使用access_value函数来访问数组C中的元素。
```Halconfor i:=0 to get_array_length(C)-1 by 1value := access_value(C, i)disp_obj(value)endfor```上述代码将依次输出数组C中的所有元素。
HALCON算子函数(十二)OCR

HALCON算子函数(十二)OCRHALCON 算子函数——Chapter 12 : OCR12.1 Hyperboxes1. close all ocrs功能:删除所有光字符,释放存储空间,但会丢失所有的测试数据。
2. close ocr_功能:重新分配拥有OcrHandle数目的分级器的存储,但所有相应的数据会丢失,不过这些数据可由write ocr事先保存。
3. create ocr class box功能:创建新的OCR分级器。
4. do ocr multi功能:给每一个Character(字符)分配一个类。
5. do ocr single功能:给一些Character(字符)分配一些类。
6. info ocr class box功能:反馈ocr的有关信息。
7. ocr change char功能:为字符建立新的查阅表。
8. ocr get features功能:计算给定Character(字符)的特征参数。
9. read ocr功能:从文件的FileName(文件名)读取OCR分级器。
10. testd ocr class box功能:测试给定类中字符的置信度。
11. traind ocr class box功能:通过一幅图像的特定区域直接测试分级器。
12. trainf ocr class box功能:根据指定测试文件测试分级器的OCRHandle。
13. write ocr功能:将OCR分级器的OCRHandle写入文件的FileName(文件名)。
12.2 Lexica1.clear_all_lexica功能:清除所有的词汇(词典),释放它们的资源。
2. clear lexicon功能:清除一个词汇(词典),释放相应的资源。
3. create lexicon功能:根据一些Words(单词)的元组创建一个新的词汇(词典)。
4.Import lexicon功能:通过FileName(文件名)选定的文件中的一系列单词创建一个新的词典。
Halcon算子汇总

Halcon算子汇总HALCON算子函数完整汇总Chapter_19:XLD19、1 Access1、get_contour_xld功能:返回XLD轮廓(contour)得坐标。
2、get_lines_xld功能:返回一个XLD多边形(polygon)数据。
3、get_parallels_xld功能:返回一个XLD并行数据。
4、get_polygon_xld功能:返回一个XLD多边形(polygon)数据。
19、2 Creation1、gen_contour_nurbs_xld功能:将一个NURBS曲线转换为一个XLD(密度?)轮廓(contour)。
2、gen_contour_polygon_rounded_xld功能:根据一个多边形(polygon)(以元组形式给出)得圆形角点创建一个XLD轮廓(contour)。
3、gen_contour_polygon_xld功能:根据一个多边形(polygon)(以元组形式给出)创建一个XLD轮廓(contour)。
4、gen_contour_region_xld功能:根据区域创建XLD轮廓(contour)。
5、gen_contours_skeleton_xld功能:将框架转换为XLD轮廓(contour)。
6、gen_cross_contour_xld功能:根据每个输入点交叉得形状创键一个XLD轮廓(contour)。
7、gen_ellipse_contour_xld功能:根据相应得椭圆弧创建一个XLD轮廓(contour)。
8、gen_parallels_xld功能:提取并行XLD多边形(polygon)。
9、gen_polygons_xld功能:根据多边形近似创建XLD轮廓(contour)。
10、gen_rectangle2_contour_xld功能:创建一个矩形XLD轮廓(contour)。
11、mod_parallels_xld功能:提取一个包括同质区域得并行XLD多边形(polygon)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
halcon concat函数
Halcon concat函数是一种用于字符串拼接的函数,它可以将多个字符串连接成一个字符串。
在Halcon的开发中,concat函数非常常用,可以帮助我们实现各种字符串处理的需求。
我们需要了解concat函数的基本用法。
concat函数的语法是concat(String1, String2, ..., StringN),其中String1到StringN是要连接的字符串。
concat函数会按照参数的顺序将字符串连接起来,并返回一个新的字符串作为结果。
例如,如果我们调用concat("Hello", " ", "world"),函数将返回"Hello world"。
除了常规的字符串连接外,concat函数还支持多种高级用法。
首先,我们可以使用concat函数实现字符串的重复拼接。
例如,如果我们调用concat("Halcon ", "is ", concat("powerful ", "software")),函数将返回"Halcon is powerful software"。
通过嵌套使用concat函数,我们可以实现更加复杂的字符串拼接。
concat函数还可以与其他Halcon字符串处理函数结合使用,实现更多的功能。
例如,我们可以使用concat函数将字符串的首尾空格去除,通过调用strip函数实现。
具体操作是先使用concat函数将字符串两端加上一个空格,再使用strip函数将空格去除。
这样,我们就可以快速实现字符串的去除空格操作。
在使用concat函数时,我们需要注意一些细节。
首先,concat函
数只接受字符串作为参数,如果传入其他类型的参数,函数将报错。
其次,concat函数对于特殊字符的处理需要特别注意。
例如,如果我们要在字符串中插入双引号,需要使用转义字符\"。
另外,如果我们要在字符串中插入换行符,可以使用特殊的转义字符\n。
除了基本的用法和注意事项,我们还可以通过一些实际例子来更好地理解concat函数的应用。
例如,假设我们需要将一个包含多个数字的字符串转换为一个整数数组,我们可以先使用split_string函数将字符串拆分成多个子字符串,然后使用concat函数将子字符串转换为整数数组。
这样,我们就可以快速实现字符串到整数数组的转换。
Halcon concat函数是一种非常常用的字符串拼接函数,可以帮助我们实现各种字符串处理的需求。
无论是简单的字符串连接还是复杂的字符串处理,concat函数都能够提供便捷的解决方案。
通过合理使用concat函数,我们可以提高开发效率,实现更加灵活和强大的字符串处理功能。
希望本文对大家了解和应用Halcon concat函数有所帮助。