搜索
aardio官方社区 门户 查看主题

分享:halcon机器视觉Dll的简单调用示例(纯抛砖)

发布者: popdes | 发布时间: 2018-1-6 22:15| 查看数: 1469| 评论数: 2|帖子模式

先简单介绍下 什么是halcon

HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。
它节约了产品成本,缩短了软件开发周期--HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。
在欧洲以及日本的工业界已经是公认具有最佳效能的Machine Vision软件

上面介绍引用自百科  ,
视觉处理应用最普遍的应该是opencv和opencv类 , 这个halcon在我看来屈居第三 , 目前国内社区有好几个研究这个的,资源还算丰富

关键是opencv我不会调用 ,这个halcon试了试还行, 至少能用里面封装好的函数了...

使用:
首先,最好是先去下载halcon这个软件,然后网上弄个注册码, 软件里面自带很多示例,最好安装的时候选择32位的,因为aar只能调用32位dll, 安装之后这些dll都有了.

废话补多少:  
下面是一点简单的测试代码, 更多的函数还有待慢慢的研究和封装到aar , 所以说是: 纯抛砖 , 待引玉!

QQ截图20180106221230.jpg

  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="halcon测试";right=1153;bottom=894;border="dialog frame")
  4. mainForm.add(
  5. picturebox={cls="picturebox";left=108;top=27;right=567;bottom=333;bgcolor=16777215;z=1};
  6. picturebox2={cls="picturebox";left=608;top=27;right=1067;bottom=333;bgcolor=16777215;z=2};
  7. picturebox3={cls="picturebox";left=103;top=396;right=562;bottom=702;bgcolor=16777215;z=3};
  8. picturebox4={cls="picturebox";left=607;top=394;right=1066;bottom=700;bgcolor=16777215;z=4}
  9. )
  10. /*}}*/

  11. import console;
  12. var dll = ..raw.loadDll("\res\halconc.dll",,"cdecl");
  13. //读取图片
  14. read_image = dll.api("read_image","int(pointer& image,string filename)");
  15. //获取图片高和宽
  16. get_image_size = dll.api("get_image_size","int(pointer image,int& width,int& height)");
  17. //显示图片
  18. disp_obj = dll.api("disp_obj","int(pointer image, INT hwnd)");
  19. //绘制一个显示窗口句柄
  20. open_window = dll.api("open_window","int( int row,int col,int width,int height,INT fatherwindow,string mode,string machine, INT& windowhandle )");
  21. //写入字符串
  22. write_string = dll.api("write_string","int(INT windowhwnd , string name)");
  23. //边界查找
  24. sobel_amp = dll.api("sobel_amp","int(pointer image ,pointer& imageB , string FilterType , int size)");
  25. //
  26. threshold = dll.api("threshold","int(pointer image ,pointer& imageB , int minGray , int maxGray)");
  27. //
  28. background_seg = dll.api("background_seg","int(pointer image ,pointer& imageB )");
  29. //
  30. fill_up_shape = dll.api("fill_up_shape","int(pointer image ,pointer& imageB , string FilterType ,int minGray , int maxGray)");

  31. var imagehwnd = ..raw.malloc(1000);
  32. var ret,imageH = read_image(imagehwnd,"res\fabrik.png");
  33. //console.log(ret,raw.tostring(imageH));

  34. var ret,width,height = get_image_size(imageH,0,0);
  35. //console.log(ret,width,height)

  36. var ret , WindowHandle = open_window(0, 0, width, height, mainForm.picturebox.hwnd, "visible", "",0);
  37. //console.log(ret , WindowHandle)
  38. disp_obj(imageH , WindowHandle);

  39. //中文字符需要格式化
  40. write_string(WindowHandle,string.fromto("asdgf你好456",936,0));

  41. var ret , BwindowHandle = open_window(0, 0, width, height, mainForm.picturebox2.hwnd, "visible", "",0);
  42. var imagehwndB = ..raw.malloc(1000);
  43. var ret , Bimagehwnd = sobel_amp(imageH,imagehwndB,"thin_sum_abs",3);
  44. disp_obj(Bimagehwnd , BwindowHandle)

  45. var ret , CwindowHandle = open_window(0, 0, width, height, mainForm.picturebox3.hwnd, "visible", "",0);
  46. var imagehwndC = ..raw.malloc(1000);
  47. var ret , Cimagehwnd = threshold(Bimagehwnd,imagehwndC,5,255);
  48. disp_obj(Cimagehwnd , CwindowHandle)

  49. var ret , DwindowHandle = open_window(0, 0, width, height, mainForm.picturebox4.hwnd, "visible", "",0);
  50. var imagehwndD = ..raw.malloc(1000);
  51. var ret , Dimagehwnd = background_seg(Cimagehwnd,imagehwndD);
  52. //disp_obj(Dimagehwnd , DwindowHandle)


  53. //var ret , DwindowHandle = open_window(0, 0, width, height, mainForm.picturebox4.hwnd, "visible", "",0);
  54. var imagehwndE = ..raw.malloc(1000);
  55. var ret , Eimagehwnd = fill_up_shape(Dimagehwnd,imagehwndE,"area",1,40);
  56. disp_obj(Eimagehwnd , DwindowHandle)

  57. mainForm.enableDpiScaling();
  58. mainForm.show();

  59. return win.loopMessage();
复制代码

最新评论

幻月 发表于 2018-1-7 13:43:28
这个不错,AAR图像方面的库越来越多了,感谢各位封装halcon和OpenCV
renmin 发表于 2018-1-8 13:09:36
这个很实用,现在USB摄像头很多,弄一个就可以测试了,辛苦了。

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-6-23 19:38 , Processed in 0.046875 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表