少有人走的路

勇哥的工业自动化技术网站

分布式halcon服务:SkHalconService(一)项目介绍

勇哥注:

halcon是不支持远程算子访问的。更别提分布式访问。

它只能弄个监听tcp的死循环,然后跟据送进来的字符串进行case。

所以这里说的分布式halcon服务,指的是勇哥正在开发的一套开源软件:SkHalconService。


系列文章:

分布式halcon服务:SkHalconService(一)项目介绍

分布式halcon服务:SkHalconService(二)两种服务调用的方式:RPC和BAT模式



(一)分布式halcon服务的特点:

1。多段式设备,一般配置多台电脑处理不同工位的视觉,这样每台电脑都得装一份halcon视觉程序。
      采用分布式halcon服务后,只在服务端运行halcon,其它客户端不需要安装halcon,只是调用服务端的halcon算子。

2。服务端负责内存管理,客户端不再有内存泄露的烦恼

3。客户端不需要安装halcon环境,只需要调用分布式halcon服务的api,极大简化了客户端的代码复杂度。

4。客户端可以有多个,并且运行在不同的设备、不同的操作系统下(即客户端可以跨网络、跨电脑、跨设备),客户端可以并发调用分布式halcon服务。

5。分布式halcon服务可以支持两种工作模式:

     一是RPC模式,它是请求应答方式进行api调用。

     二是BAT模式,即脚本批处理方式,客户调把脚本发往服务端,脚本执行过程完全是在服务端,执行完成后回复处理结果给客户端。

6。分布式halcon服务可以支持集群,通过添加新的IPC来增强处理能力。


(二)分布式halcon服务的应用场景

适合使用halcon平台,低速、传统算法视觉处理应用的设备开发。

适合教学与实验的需求。


调用示例:

下面是客户端调用halcon服务端的代码。

客户端程序使用代理类halcon调用服务端的api,api设计成跟halcon的算子基本一致。

hdev.SetDraw(HDevelop.SetDarwEnum.margin);
hdev.SetPart(1200, 1600);
				
HImageObj img = halcon.Readimage("d:\\printer_chip_01.png");
hdev.DispImg(img);
HRegionObj region= halcon.threshold(img, 128, 255);
HRegionObj connectRegion= halcon.Connect(region);
HRegionObj selectRegion=halcon.SelectShape(connectRegion, "area", "and", 19000, 40000);

hdev.SetColor(HDevelop.DispColorEnum.red);
hdev.DispRegion(selectRegion);

image.png

上面的代码等于下面的halcon代码。

image.png

那么,跟你直接使用halcondonet.dll的 HOperatorSet方式有什么不一样呢?

区别就是现在软件的模式是SOA(面向服务)方式,所有的halcon算子都放在了服务端运行。

而客户端可以跨编程语言(可以是C#,C++,java,  Python等)、网络(包括互联网)、跨系统(可以是windows, linux, macos)、跨设备(可以是电脑、平板、手机等)。




项目地址:

https://gitee.com/netMarketing/skhalconservice  




发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864