
下面是一个用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)
在HAlCON开始执行程序,有以下步骤1.需要另起一行但不运行程序然后直接敲击回车,程序将被执行。若想在不运行程序的情况另起一行,shift+回车。
2. 重置程序执行(重置变量)
程序中的变量一旦被赋值,其将一直保持该值。若想重置变量并重新执行程序,需首先通过菜单栏“执行”--“重置程序执行”来重置变量。
3. 在图形窗口中只显示某一个图形变量
图形窗口左上角有“清空图形窗口”图标,清空图形窗口后,在图形窗口中单击右键,选择“显示”某一图形变量。前提是,该图形变量已经被赋值。
4. 注释与取消注释快捷键
F4快速注释,F3取消注释。
5. 在图形显示窗口中查看鼠标处信息
按Ctrl键,同时在图形显示窗口中移动鼠标,可以显示鼠标位置以及鼠标所在处的图像灰度值。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)