Halcon+C#显示一张图片


https://blog.csdn.net/horsee/article/details/77774538

感受:趟了几个雷,摸到几块石头,知其然不知其所以然,聊以记录,为后人享。欲知其所以然,还是得从头去 

软件配置: Halcon 12 + Visual Studio 2013

以下实现Halcon读取并完整显示桌面上的一幅图片

1.实现Halcon读取图片并显示的功能

首先当然是先把Halcon的代码写好:

dev_close_window ()
read_image (Image, 'C:/Users/Administrator/Desktop/timg.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_part (0, 0, Height-1, Width-1)
dev_display (Image)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意这里的程序当中,用到了一个dev_set_part()算子,这个算子很重要。如果没有用这个算子,则在最后完成的控件中,图片将显示不完整。 
另外注意,在HDevelop环境中,在默认设置下,图片的显示和更新是自动的。但如果想在控件中实现图片的显示,则必须在每一处需要显示的位置,使用dev_display()算子。

然后将Halcon代码导出成c#代码: 
Halcon+C#显示一张图片_第1张图片

2.建立c#工程

在VS中新建一个c#工程,记住框架要选 .NET Framework 4,不要手贱看到还有高版本的4.5就跑去选4.5

在“设计”中完成以下设计: 
Halcon+C#显示一张图片_第2张图片 
如何添加按钮,在这里就不多说了。 
上面的那个控件是HWindowsControl。 
Halcon+C#显示一张图片_第3张图片

3.工具箱中添加Halcon窗口工具(首次使用需要)

如果是首次使用Halcon和c#混合编程,则需要向VS的工具箱中添加Halcon窗口工具HWindowControl。添加的方法是在“视图”->“工具箱”-> “所有Windows窗体”中右击,选择“选择项” 
Halcon+C#显示一张图片_第4张图片 
在弹出窗口中选择“浏览” 
Halcon+C#显示一张图片_第5张图片 
在MVTech安装目录下查找:halcon12.0\bin\dotnet20或dotnet35文件夹,我这里是选的dotnet35文件夹,应该是和VS的版本相匹配。 
找到文件夹下halcondotnet.dll添加即可。 
Halcon+C#显示一张图片_第6张图片

4.程序改写

接下来就是非常重要的程序改写阶段啦。 
首先在程序头添加

using HalconDotNet;
  • 1

接下来是一个坑,向namespace中添加导出的Halcon c#代码时一定得注意:必须把导出的代码放在控件的代码段后面。否则就会弹个错!!! 
喏就是它了,public partial class HDevelopExport: 
Halcon+C#显示一张图片_第7张图片

最后一步就是改写按钮控件的事件响应:

        private void button1_Click(object sender, EventArgs e)
        {
            HDevelopExport HD = new HDevelopExport();
            HD.RunHalcon(hWindowControl1.HalconWindow);
        }
  • 1
  • 2
  • 3
  • 4
  • 5

对我很懒,就叫button1. 
最后要注意,项目编译的时候,属性选Any CPU,选别的也会错误框弹弹弹!!! 
这里写图片描述

Halcon+C#显示一张图片_第8张图片



**************************************************异常*********************************************************

按照以上操作后,抛出异常


处理方式

Halcon+C#显示一张图片_第9张图片

参考文章:

https://www.cnblogs.com/qqhfeng/p/6649150.html







附:Halcon的发展前景

作者:马会超
链接:https://www.zhihu.com/question/51976350/answer/136483560
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

用halcon五年回答一下
1.机器视觉好找也不好找工作,在北京 上海 深圳 尤其深圳人才奇缺。如果是一些二线城市岗位较少,甚至没有。
2.刚开始学halcon怎么样? 不怎么样,没有任何图像基础你基本如看天书,先找本冈萨雷斯的书通看一遍,书中大部分内容用c++实现一遍打好基础。而后在开始用halcon。
3.c++与c#。两者都要会前者写后台算法 后者做ui。

个人实际项目中halcon,opencv,c++,c#,最近又在用python。

这里不说技术进阶路线学习路线之类的,
就说下学了halcon出来的境况,苏杭,深圳上海都有很大的需求,稍微能干点活的起薪万起吧,如果去二线城市,你可能找不到工作,打开招聘网站搜所在城市一条招聘也没有,是的,你没看错,工业自动化的市场还在发展期,在苏沪杭深有大量的需求和内地有鲜明对比。
答主用halcon五年,所在城市无职位需求,一般都是接点外包闲暇时做做,单子也是络绎不绝,因为需求太大会的人太少都是南方那边过来的项目,halcon玩的也算溜,但是在所在城市找一个halcon的职位还真不容易,正式工作是在一家公司做软件服务俗称客服,懵逼不
。同时也有同学毕业后开始学halcon(毫无编程基础只会helloword)的情况下学halcon,在深圳拿到一份不错的薪水。

机器视觉不同于其他软件行业的工作,你需要有编程基础,需要懂算法,需要懂光源,伺服等等,所以工作环境也很重要,接触到多的项目长见识,才能有提高。

你可能感兴趣的:(Halcon)