如何用C++调用halcon函数?

如何用C++调用halcon函数?,第1张

下面是一个用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键,同时在图形显示窗口中移动鼠标,可以显示鼠标位置以及鼠标所在处的图像灰度值。


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

原文地址:https://54852.com/yw/8081937.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存