北京哪家医院白癜风专科最好 http://m.39.net/pf/bdfyy/bdfzj/北京哪家医院白癜风专科最好 http://m.39.net/pf/bdfyy/bdfzj/大家好,我是华山自控编程朱老师
前几天一个学员在学习C#与视觉检测交互时。一直检测出现错误,用接口api去创建的时候,
截图如下:
不知道什么原因。
其实很多初学者在学习vs和视觉检测交互时,都会遇到类似的问题,不知道是动态库halcon.dll,halcondotnet.dll问题,还是视觉api调用的代码问题。下面我们就对这个问题进行详细分析。
问题分析:
该同学在测试去掉不感兴趣区域,这里报错!看了问题,实在找不到。这个错误其实提示很清晰了。对于老司机来说,可能一下就知道问题点在哪里。但是对于新手来说,看到这个语法错误,还是会一筹莫展。不知道如何去定位问题。
接下来我就教该同学如何去定位和解决问题:
首先:我就让该同学把trycatch代码去掉。用于处理的图片有问题,可能为空值。单步调试一下,看问题出在哪。该同学按照我的思路做了以后,发现了问题:区域变量为空。截图如下:
所以第二步。我让该同学继续单步调试,检查该变量为什么会为空值。经过检查,发现了问题:截图如下:
全局变量定义:
然后在选择roi区域按钮事件代码里面重复定义了该变量。导致该变量又被覆盖了。然后在其他地方调用时,还是取得全局变量的默认空值。所以报错了。
最后:该同学注释掉roi方法里面的区域变量的定义后//HObjectPregion;
继续运行。这次终于成功了:
通过以上调试方法。该同学学会了C#和视觉检测交互的基本技能。
另外在衍生下视觉检测HoperatorSet类的相关api知识点:
1)publicstaticvoidReadImage(outHObjectimage,HTuplefileName);用法:读取具有不同文件格式的图像。
2)publicstaticvoidGenEmptyObj(outHObjectemptyObject);用法:创建空对象元组。
3)publicstaticvoidDrawRectangle1(HTuplewindowHandle,outHTuplerow1,outHTuplecolumn1,outHTuplerow2,outHTuplecolumn2);:用法:绘制一个与坐标轴平行的矩形。
4)publicstaticvoidGenRectangle1(outHObjectrectangle,HTuplerow1,HTuplecolumn1,HTuplerow2,HTuplecolumn2);用法:创建一个与坐标轴平行的矩形。
5)publicstaticvoidDispObj(HObjectobjectVal,HTuplewindowHandle);用法:显示图像对象。
6)publicstaticvoidReduceDomain(HObjectimage,HObjectregion,outHObjectimageReduced);用法:缩小或提取图像的域。
7)publicstaticvoidWriteImage(HObjectimage,HTupleformat,HTuplefillColor,HTuplefileName);用法:以图形格式写入图像
8)publicstaticvoidCropDomain(HObjectimage,outHObjectimagePart);用法:剪切定义的灰度值
总结如下:
1)调试必备技能,debug模式单步跟踪调试变量赋值。
以上就是初学者在学习c#与视觉检测时常见的问题。比较浅显。不当之处敬请指正。