注释的HALCON的程序
*关闭窗口
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)
*显示Image dev_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]
endfor
dev_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.
*获取标定出来的位姿3D
Pose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]
*设置新的原始3D位姿
set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)
*(核心函数)生成带矫正映射信息的图像MapSingle
gen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 'bilinear')
*将单张图像加入图像元组Maps
concat_obj (Maps, MapSingle, Maps)
endfor
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()
*代码到此处:有了NumImages张标定的原图 + NumImages张带矫正映射信息的图像,
*接下来While循环,一张一张的矫正图像
*
* Map the images.(矫正图像)步骤三
*
*窗口设置
dev_open_window (0, 391, 900/2, 800/2, 'black', WindowHandle2)
Button := 0
NumImage := 1
while (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 + 1
if (NumImage > NumImages)
NumImage := 1
endif
dev_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 := 0
endif
if (Button)
break
endif
endwhile
dev_set_window (WindowHandle2)
dev_close_window ()
注释的HALCON的程序的更多相关文章
- IREP_SOA Integration程序注释语法Annotations(概念)
20150506 Created By BaoXinjian
- 5 给我们的c#程序添加注释
注释是你的程序中的一个重要部分.在程序中添加注释是用来告诉你和其他人你的程序是做什么用的,你的思路是怎样的.注释可以用你熟悉的中文进行添加. 当你想暂时把你程序中的某些语句去掉的时候,不需要把他们删除 ...
- C语言程序注释风格
良好编程习惯的养成对于一个程序员的发展非常重要,而注释对于一份程序来讲又是一个必不可少的组成部分,今天来研究一下C语言程序的注释风格. 注释是源码程序中非常重要的一部分,一般情况下,源程序有效注释量必 ...
- ubuntu Ros环境halcon的一个程序
这个首先并不是我一边做实验一遍记录的,而是我做完成以后才想起来做个分享的,所以中途遇到的很多问题,并没有来得及记录下来,现在写的这些都是后话了 首先呢!我们不需要在ROS下写halcon的程序也是可以 ...
- halcon程序输出成c++程序
halcon语法程序: dev_open_window (0, 300, -1, -1, 'black', WindowID) read_image (Die4, 'C:/Users/Public/D ...
- 如何为我们的程序编写开发文档——Java文档注释
Java文档注释是用于生成Java API文档的注释,通过在程序中的类.属性.方法部分加上注释,就可以用javadoc命令生成漂亮的API文档,是程序员进阶的必备技能. 注意,文档注释只说明紧跟其后的 ...
- Halcon相关
1.Halcon的自我描述 Program Logic Ø Each program consists of a sequence of HALCON operators Ø The progra ...
- Photoshop和Halcon中的极坐标变换
极坐标想必学过高中数学的人都听过,一般的坐标系中用(x, y)值来描述一个点的位置,而在极坐标系中,则使用到原点的距离ρ和夹角θ来描述该点的位置. 我很早就接触了Photoshop,知道Photosh ...
- C/S架构应用程序开发培训笔记
最近为客户组织了一项C/S架构程序的开发培训,讲解C/S应用程序开发中需要注意的点. 我主要是做C/S方面的ERP/CRM程序开发,界面是用Windows Forms技术,有遗漏或错误的地方欢迎批评指 ...
随机推荐
- 关于Unity的C#基础学习(一)
一.程序包含 1.数据:运行过程中产生的 2.代码:代码指令 数据和代码都是存放到内存中的,代码指令在程序加载的时候放到内存,数据是在程序运行的时候在内存中动态地生成,随时会被回收,要定义变量来存放数 ...
- ubuntu 安装dlib 出现dlib.so: undefined symbol: png_set_longjmp_fn
参考网上的教程安装dlib 安装教程1 sudo apt-get install libboost-python-dev cmake sudo pip install dlib 安装教程2ubuntu ...
- JavaScript处理JSON
一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standa ...
- jQuery学习笔记2——表单操作
一.获取和设置表单的值:val()和text() 1. 获取表单的值: $("#username").val(); 2. 设置表单的值: $("#username&quo ...
- 修改Android 界面颜色
btnGetCode.setTextColor(getResources().getColor(R.color.dark_white)); Color.parseColor("#1a71d4 ...
- 隐马尔可夫树(HMT模型)
HMT(Hidden Markov Tree)隐马尔可夫树 [论文] 小波变换与HMT模型的图像插值算法-郭昌-中山大学学报(自然科学版)
- 一稿设计多端适配优雅的解决方案 - rem
规范目的 为提高前端团队开发效率,输出高质量的前端页面代码,提高UI设计还原度,特编写该规范文档.本文档如有不对或者不合适的地方请及时提出. JS代码块 (function (doc, win) { ...
- 学习《深入理解C#》—— 泛型 (第三章3.1---3.2)
泛型是什么? 泛型(generic)是C# 2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定 ...
- UE4中VR模式下窗口单目双目的问题
如果要是单目的话使用HMD MIRROR MODE 3或者4
- 用MCI处置WAV视频时,怎样才能让视频在当前窗口播放
用MCI处理WAV视频时,怎样才能让视频在当前窗口播放MCI播放视频默认是新开一个窗口播放,播放完毕返回原来的窗口,想着原来窗口播放如何做? mciSendCommand或mciSendString怎 ...