halcon连接工业相机 | halcon保存拍摄的照片程序

halcon连接工业相机 | halcon保存拍摄的照片程序

1. halcon控制相机拍照

1、用数据线连接摄像机和电脑。

2、连接好了后,在显示屏幕上点击“USB连接”,待摄像机显示屏幕出现“已连接”的提示后,就代表摄像机和电脑连接成功了。

3、点击电脑右下角的链接提示,打开摄像机的盘符内容。在出现的两个文件夹里面,“AVCHD”和“DCIM”分别代表视频和图片资料。

4、如果要拷贝视频资料,可以点击“AVCHD”然后选择“BDMV”_“STREAM”,然后按照时间顺序寻找、拷贝即可。如果要拷贝图片资料,点击“DCIM”进入拷贝即可。

2. halcon支持的相机

Halcon软件绝大部分工业相机都支持,我见过的都支持,国产的如大恒,进口的如ISG。

3. halcon连接工业相机

不用,只要你移动的幅度不大,位置不变 直接拍也没有事

4. halcon保存拍摄的照片程序

从halcon到vc++

read_image(&image,”文件名”);//读入的为灰度图像

//获取图像指针,注意输出变量的类型

charlpcstype[max_string];

hlongpointer,width,height;

get_image_pointer1(image,&pointer,lpcstype,&width,&height);

//halcon与vc++中的图像之间,存在着上下翻转

byte*lpbyte;

byte*imageg;

intbytewidth;

bytewidth=((long)width*3+3)/4*4;

imageg=null;

imageg=newbyte[bytewidth*(long)height];

lpbyte=(byte*)pointer;//注意结合图像像素存储的类型进行定义

inti,j;

for(j=(long)height-1;j>=0;j–)

{//(注意tuple中图像数据的存放和vc中的差别)

for(i=0;i

{

*(imageg+j*bytewidth+i*3+0)=*lpbyte;

*(imageg+j*bytewidth+i*3+1)=*lpbyte;

*(imageg+j*bytewidth+i*3+2)=*lpbyte;

lpbyte++;

}

}

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,

width,//显示窗口宽度

height,//显示窗口高度

0,

0,

width,//图像宽度

height,//图像高度

imageg,

rotatebmpinfo,

dib_rgb_colors,

srccopy);

m_pwnd->releasedc(pdc);

delete[]imageg;

delete[]bitbuffer;

2.从vc++到halcon

unsignedchar*pointer;

intwidth,height;

pointer=newunsignedchar[width*height];

inti,j;

for(i=0;i

5. halcon单相机标定

视觉九点标定是点的仿射变换,只是图像行列、和坐标XY的仿射关系,也就是矩阵关系。

从只有XY2个坐标轴来看,只有二个方向,所以只能适用于2D。

视觉九点标定具体流程:

第一步:制作9个点,相机采图的时候能全部拍到即可。

第二步:保持9个圆点不动,使用机械手的作业工具对准9个圆的圆心位置,并保存好机械手坐标。

然后把9个点的坐标按照圆的序号在生成一个一维数组变量。(一定要对好序号,就是第一步中排序后的序号和数组元素一一对应)

第三步:使用图像行列的圆心和机械手的一维数组变量,生成一个矩阵关系。

第四步:有矩阵了,就直接使用矩阵即可。

第五步:很多人会认为第四步完成了,有一部分情况是没有问题。

识别的物体的机械手位置不在抓取9个点的位置时,就不适用了,会偏的一塌糊涂。

相关内容