1、摄像机外参:决定摄像机坐标与世界坐标系之间相对位置关系。其中Pw为世界坐标,Pc是摄像机坐标,他们之间关系为Pc = RPw + T式中,T= (Tx,Ty,Tz),是平移向量,R = R(α,β,γ)是旋转矩阵,分别是绕摄像机坐标系z轴旋转角度为γ,绕y轴旋转角度为β,绕x轴旋转角度为α(也可以从左像右看把它理解为先绕x轴旋转α,再绕旋转后的坐标系的y轴旋转β,最后绕再次旋转后的z轴旋转γ)。6个参数组成(α,β,γ,Tx,Ty,Tz)为摄像机外参。绕z轴的旋转矩阵,若
StartCamParam (input_control)数阵-> (实数/整数)Camer type 为:'area_scan_division''area_scan_polynomial,,area_scan_telecentric_division,,area_scan_telecentric_polynomiar'line_scan'(类型不同,参数不同)相机内部参数的初始值。元素数量:((StartCamParam==8)11(StartC
摄像机分为两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera)。准确来说,叫摄像机系统比较正确。所谓的面扫描摄像系统是指可以通过单纯曝光取得面积影像,而线扫描摄像机,必须利用运动速度才能取得影像。两种不同的摄像系统由于成像的过程有区别,所以标定的过程也有区别,这里仅讨论面扫描摄像系统。流程如下: 1、初始摄像机参数:startCamPar:=[f,k,Sx,Sy,Cx,Cy,NumCol,NumRow] f 焦距
勇哥先放上代码,有空时再研究一下。* Attention:
* This program reads the interior camera parameters from the file
* 'camera_parameters.dat', which, e.g., could be generated&
勇哥先上程序,后面再解释:list_files ('E:/calibration_image', 'files', ImageFiles)
TmpCtrl_AllMarkRows := []
TmpCtrl_AllMarkColumns := []
TmpCtrl_StartPoses := []
TmpCtrl_ReferenceIndex := 0
S
两根线的起始点端点值如下:1065.69,1190.38,1054.0,1193.51065.86,1190.35,1054.0,1194.0这个坐标看上去是不是几乎一样,在0.5个像素的差别内。那么两线的角度是不是就应该差不多呢?dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image(Image,
对于标定来说,一般常见的有用于测量的线性与非线性标定,另一类就是和运动相关的标定,手眼标定。勇哥写过许多epson机器人的手眼标定,也有halcon仿制这种方式的实现方法。但是halcon有自己的手眼标定。CalibObjDescr := 'calibrate_hand_eye_scara_setup_01_calplate.cpd'
CalibrationPlateThickness := 0.003
gen_cam_par_area
*重要理解一下这个几个算子
* dev_update_off ()
*  
程序调用十张不同光照下的图片,尝试找ncc模板,求取模板位置。最后计算结果的标准差。代码如下:* This example program shows how to use HALCON's correlation-based
* matching. In particular it demonstrates the robus
OpenCv的Mat和Halcon的HObject数据类型的互相转换,Halcon的版本是13.0,OpenCV的版本是3.2HObject Mat2HObject(const cv::Mat &image)
{
HObject Hobj = HObject();
int hgt = image.rows;
int wid = image.cols;