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个点的位置时,就不适用了,会偏的一塌糊涂。