halcon 多个相机怎么标定

halcon 多个相机怎么标定,第1张

一吵如、读入图像函数如下

list_files ('E:/calibration_image', 'files'纳碰困, ImageFiles)

for Index := 0 to |ImageFiles|-1 by 1

read_image(Image, ImageFiles[Index])

endfor

注释:'E:/calibration_image':为图像路径,图像文件索引是从0开始的,所以|ImageFiles|(文件数量)减去1。

算子:read_image(:Image :FileName):读取名称为FileName的图像Image。

二、提取图像Images中标定板上的圆形标志来确定标定板的有效区域,算子如下:

find_caltab(Image:Caltab:CalTabDescrFile,SizeGauss,MarkThresh,MinDiamMarks:)

确定标定板上圆形标志点的二维坐洞念标,并得到摄像机外部参数的初始值,算子如下:

find_marks_and_pose (Image,CalTabRegion: :CalTabDescrFile

,StartCamParam ,StartThresh,

DeltaThresh,MinThresh,Alpha,MinContLength,MaxDiamMarks:Rcoord,Ccoord,

StartPose)

下面是一个用C++调用halcon函数的实例,说明://后面的部分为程序的说明,在程序运行中是不起作用的。

a)  gen_image1_extern函数中的变量width,height必须为HTuple类型,Pointer指针为unsignedchar类型,输入时转换为long型。

b)  width,height必须与Pointer指向的图像数链基据的长宽一致。

c)  Pointer指针在gen_image1_extern函数调用之前分配了内存,之后不要马上释裂唤闭放,否则会出错。应该在确保不再使用Image变量之后再释放。halcon内部会自动释放Image,感觉没有释放Pointer(还需要进一步验证)。

d)  显示图像时,可能存在着图像的上下翻转,可以按照1中的方法,将图像数据翻转后再调用gen_image1_extern,或者使用肆裂halcon中的函数mirror_image()进行翻转。

BITMAPINFO*RotateBmpInfo

BYTE*bitBuffer

bitBuffer=NULL

bitBuffer=newBYTE[sizeof(BITMAPINFO)]

RotateBmpInfo=(BITMAPINFO*)bitBuffer

RotateBmpInfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER)

RotateBmpInfo->bmiHeader.biHeight     =Height

RotateBmpInfo->bmiHeader.biWidth     =Width

RotateBmpInfo->bmiHeader.biPlanes     =1

RotateBmpInfo->bmiHeader.biBitCount=24

RotateBmpInfo->bmiHeader.biCompression  =BI_RGB

RotateBmpInfo->bmiHeader.biSizeImage      =Height*bytewidth

RotateBmpInfo->bmiHeader.biXPelsPerMeter=0

RotateBmpInfo->bmiHeader.biYPelsPerMeter=0

RotateBmpInfo->bmiHeader.biClrUsed         =0

RotateBmpInfo->bmiHeader.biClrImportant  =0

CWnd*m_pWnd

m_pWnd=AfxGetApp()->GetMainWnd()

CDC*pDC=m_pWnd->GetDC()

::StretchDIBits(

pDC->GetSafeHdc(),

Width+10,

Height+10,

从VC++到Halcon

unsignedchar*Pointer

intwidth,height

Pointer=newunsignedchar[width*height]

inti,j

for(i=0i<heighti++)

{

for(j=0j<widthj++)

{

Pointer[i*width+j]=j%255

}

}

HobjectImage

gen_image1_extern(&Image,"byte",(HTuple)width,(HTuple)height,(long)Pointer,NULL)

严格说需要标定标定目主森如贺要:1消除镜畸变

2确定像素世界坐标关系通俗说像素等于少毫米及相橡租位置关系(般6外参数:XY,Z 向平移量及夹角)

说离CCD近拍图像比较离CCD远拍图像比较变焦镜或者通改变像距改变物距此派.

精度苛刻镜畸变及相机测物体垂直情况用标准品式代替标定:比直径10mm圆halcon拟合像素直径1000像素像素等于10/1000=0.01mm.........(要求聚焦准确)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12227780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存