1.需要另起一行但不运行程序然后直接敲击回车,程序如并将被执行渣郑迹。若想在不运行程序的情况另起一行,shift+回车。
2. 重置程序执行(重置变量)
程序中的变量一旦被赋值,其将一直保持该值。若想重置变量并重新执行程序,需首先通过菜单栏“执行”--“重置程序执行”来重置变量。
3. 在图形窗口中只显示某一个图形变量
图形窗口左上角有“清空图形窗口”图标,清空图形窗口后,在图形窗口中单击右键,选择“显示”某一图形变量。前提是,该图形变量已经被赋值。
4. 注释丛卜与取消注释快捷键
F4快速注释,F3取消注释。
5. 在图形显示窗口中查看鼠标处信息
按Ctrl键,同时在图形显示窗口中移动鼠标,可以显示鼠标位置以及鼠标所在处的图像灰度值。
下面是一个用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对于机器视觉的学习者、开发者而言并不陌生,称其为机器视觉领域第一软件,亦无可厚非。HALCON对于视觉系统的控制、图像的处理和分析都能够较好的实现,尤其是各种图像处理算法。但就其本身而言,开发用户界面并不理想。用户界面以及对于其他底层的控制,比如和底层电路板、PLC等的控制和通信,可通过VC++、VB等进行开发。方便的是,HALCON恰恰能够被这些开发工具所调用,它支持C、C++、VB、JAVA等等。
刚开始结合VC++结合HALCON进行学习和开发时,因为软件方面的薄弱,对如何在VC++中如何调用HALCON感到不知所措,也在网上找了一些资料,资料较少,基本内容相同,或许能用,但始终对于笔者个人而言不太灵光。后来在一位软件同事的指导下,对其有了较为深刻的了解,其实说到底对软件工程师而言这是一件很简单的事,也就是将HALCON的库导入VC++。
以下,针对初学者一步步介绍,以MFC作为开发工具。
在Visual Studio中新建项目选择Visual C++下的MFC,其中的MFC应用程序,建立过程不赘述。本文以Visual Studio 2005为例。
打开HALCON安装目录(以HALCON7.0为例,后面的版本也相同),如下图1所示:
将其中的include文件夹整个拷贝至所建MFC项目工作目录下,如下图2所示:
同样,将HALCON的LIB文件拷贝到所建MFC项目工作目录下,因使用C++进行开发,所以选择X:Program FilesMVTecHALCONlibi586-nt4下的拦简halconcpp.lib,这里X:为安装盘符
打开stdafx.h,在文件中空白位置处,加入
#include "include/cpp/HalconCpp.h"
#prama comment(lib,"halconcpp.lib")
下一步,点击项目下的属性,如下图6所示:
点开配置属性中的C/C++,如下图7所示:
当点在附加包含目录右侧空白框时,会出现的图标,点开,如下图8所示:
点击新建行,将所建MFC项目工程目录下的include文件夹的地衫毁址输入,也就是刚才我们拷贝过去的那个文件夹
最后一步,在需要使用HALCON库的地方,将其头文件导入,以****Dlg.cpp为例
这样我们就算成功在VC++/MFC中导入了HALCON库文件,就可以调用HALCON的函数,使用其强大的算法。另外,单纯执行上述步或衡备骤后,按F5启动调试,应该是不会有任何的ERROR和WARNING的。此方法同样适用于VB,在此不赘述,VB的开发者可自行尝试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)