怎么在Visual Studio 10.0中设置Halcon机器视觉

怎么在Visual Studio 10.0中设置Halcon机器视觉,第1张

开始做Halcon的上位机,选用Visual Studio 10.0平台。

C#

第一步:

Visual Studio 10.0设置引用HalconDotNet.dll

01.新建项目

02.选择Visual C#

03.修改文件名

04.确认

第二步

Visual Studio 10.0设置引用HalconDotNet.dll

01.选择“解决方案资源管理器”

02.选择“引用”,右键

03.选择“添加引用”

第三步

Visual Studio 10.0设置引用HalconDotNet.dll

01.在添加引用选项卡选择浏览

02.选择路径:X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20

03.选择“HalconDotNet.dll”

04.确认

第四步

Visual Studio 10.0设置引用HalconDotNet.dll

01.选择“工具箱”

02.选择“所有工具”或任意工具控件,右键

03.选择“选择项”

第五步

Visual Studio 10.0设置引用HalconDotNet.dll

选择Halcon图像控件

Visual Studio 10.0设置引用HalconDotNet.dll

还有VB的设置,如下图:

Visual Studio 10.0设置引用HalconDotNet.dll

01.选择项目名称

02.点击显示全部文件,取消隐藏,就可以看到引用

03.引用,邮件

04.添加,之后的步骤和C#一样

Visual Studio 10.0设置引用HalconDotNet.dll

选择工具控件,步骤和C#基本一样。

VB的第二张图,步骤如下

01.选择“工具箱”

02.选择“所有工具”或任意工具控件,右键

03.选择“选择项”

04.在“.net framwork组件”的选项卡中,选择浏览

05.出来的对话框中,选择X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20

06.选择“HalconDotNet.dll”

07.确认

08.这时候的工具栏的控件是HWinwow 控件。

kamuixiao :

X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20

路径下的无法使用,在.net framework组件无法找到

X:\Program Files\MVTec\HALCON-10.0\bin\dotnet35

路径下的可用,在.net framework组件下可以找到,并且在工具箱上能够找到并使用,但是功能无法实现,如下图

我不作其他动作,程序代码内容仅是运行时候读取一张图片,

在调试的时候能够运行,但读不到图片……楼主在VB.NET环境下正常运行了吗?求解~

Visual Studio 10.0设置引用HalconDotNet.dll

x8515618 :

定义错了

dim m_hWindow As Htuple '这是一个句柄,不是窗体控件

x8515618 :

Dim m_hWindow As Htuple = Nothing

kamuixiao :

谢谢楼上的建议,但是我试了下发现仍然不行,我觉得问题不是出在这里,不知道使用VB.NET的各位有没有遇到过,反正我是没能正常实现过一次的,输出显示的错误情况如图:

Visual Studio 10.0设置引用HalconDotNet.dll

x8515618 :

你只是读取了图片,都没有显示图片呢

灵峤 lencue :

你最开始新建项目的时候选择的“.net框架”版本是多少的?.net 2.0就用dotnet20文件夹,3.5就用dontnet35文件夹,你再查看一下,会不会是这个问题,看能不能解决。

irun999 :

请问楼主,用在VS2008中用C#读入一直比较大的图片的时候只是显示部分图片,如何解决?

灵峤 lencue :

dev_resize_window_fit_image(ho_Image, 0, 0, 300, 400)

用这个算子,在C#的program.cs中可以用的,后面的300,400就是显示这个图片的大小的,会被缩放到这个比例。

irun999 :

请问在VS 2005 C# 处理视频,程序老是死掉,怎么办?视频无法实时显示。 是不是视频太大了,VS2005处理不够来?该怎么办?

灵峤 lencue :

采用C#的多线程,具体怎么使用,我还在学习中,要是有进展,再一起讨论。

好吧,我写漏了,但事实上我把显示补上,然后按照兄台所说修改定义后仍然没能成功!~附图:

Visual Studio 10.0设置引用HalconDotNet.dll

irun999 :

今天下午发现视频无法显示是因为hdevelop导出程序的死循环函数里没有 HOperatorSet.DispObj 显示函数。但是关闭程序就会出现vshost.exe无响应。这个问题可能得多线程解决了。

在Halcon中,图像是由像素组成的,一般的算法也都是基于像素来进行处理,所以其中Image和Region都是以像素为最小单位,XLD用来表示亚像素的轮廓或者多边形

XLD的特征大部分跟Region很像,很多算子都是在Region的算子后加上_xld。其主要的特征如下:

1.get_contour_xld(Contour : : : Row, Col)

功能: 返回XLD轮廓的坐标;

输入: XLD对象Contours;

输出: 坐标值Row和Col;

2.get_lines_xld(Polygon : : : BeginRow, BeginCol, EndRow, EndCol, Length, Phi)

功能: 返回一个XLD多边形的数据(以线形式);

输入: 多边形XLD对象Polygon ;

输出: 直线的起点坐标、终点坐标、长度和角度;

3.get_parallels_xld(Parallels : : : Row1, Col1, Length1, Phi1, Row2, Col2, Length2, Phi2)

功能: 返回一个XLD平行数据(以线形式);

输入: 两平行线XLD对象Parallels ;

输出: Row1, Col1, Length1, Phi1, 两平行线第一条两端点坐标与线长,线方向;

输出: Row2, Col2, Length2, Phi2两平行线第二条两端点坐标与线长,线方向;

4.get_polygon_xld(Polygon : : : Row, Col, Length, Phi)

功能: 返回一个XLD多边形的数据;

输入: 多边形XLD对象Polygon ;

输出: 多边形每个顶点坐标Row,Col、每条边的长度和角度;

1.gen_circle_contour_xld( : ContCircle : Row, Column, Radius, StartPhi, EndPhi, PointOrder, Resolution : )

功能: 根据相应的圆或者圆弧创建XLD;

输入: 圆弧的圆心坐标,半径,起始角度和终止角度 ;

输入: 沿着圆弧点的方向(PointOrder),可选“positive”和“negative”;

输出: 创建的XLD对象ContCircle;

2.gen_contour_nurbs_xld( : Contour : Rows, Cols, Knots, Weights, Degree, MaxError, MaxDistance : )

功能: 将NURBS曲线转换为XLD轮廓;

输入: NURBS曲线的参数 ;

输出: 近似NURBS曲线的XLD轮廓;

3.gen_contour_polygon_rounded_xld( : Contour : Row, Col, Radius, SamplingInterval : )

功能: 根据一个带圆角的多边形(以元组形式给出)创建一个XLD轮廓;

输入: 多边形参数 ;

输出: 多边形生成的XLD轮廓;

4.gen_contour_polygon_xld( : Contour : Row, Col : )

功能: 根据一个多边形(以元组形式给出)创建一个XLD轮廓;

输入: 多边形点坐标Row,Col ;

输出: 多边形生成的XLD轮廓;

5.gen_contour_region_xld(Regions : Contours : Mode : )

功能: 根据区域Region创建XLD轮廓;

输入: 区域Region ;

输入: 模式Mode,“Center”,以边界像素的中心作为轮廓点;“border”,以边界像素的外边界作为轮廓点;“border_holes”,获取外边界同时可以获得所有孔的轮廓 ;

输出: 生成的XLD轮廓;

6.gen_contours_skeleton_xld(Skeleton : Contours : Length, Mode : )

功能: 将骨架转换为XLD轮廓(contour);

输入: 轮廓骨架Skeleton ;

输入: 提取轮廓线包含的最小点数;

输入: 输入过滤模式( 'filter', 'generalize1', 'generalize2');

'filter' ,因为轮廓线在端点被分割,所以会存在一种情况,就是即使很长的轮廓线也可能被分割成很多的短线,即使他们的长度大于设定参数Length

'generalize1',这种模式下,就可以避免长的轮廓被分割,而且长度小于参数Length的线段会被舍弃;

'generalize2' ,那么短的线段会被保留下来,只要线段有两个端点,即使长度小于参数Length,也会被保留。

输出: 生成的XLD轮廓;

7.gen_cross_contour_xld( : Cross : Row, Col, Size, Angle : )

功能: 根据每个输入点交叉的形状创键一个XLD轮廓(contour);

输入: 所有交叉点的坐标Row、Col ;

输入: 交叉点的大小;

输入: 每个交叉点的角度Angle;

输出: 生成的XLD轮廓Cross ;

8.gen_ellipse_contour_xld( : ContEllipse : Row, Column, Phi, Radius1, Radius2, StartPhi, EndPhi, PointOrder, Resolution : )

功能: 根据相应的椭圆弧创建一个XLD轮廓(contour);

输入: 椭圆弧的参数Row、Col、Phi ;

输入: 轮廓点的顺序,“positive”和“negative”;

输入: 相邻轮廓点的最大距离Resolution;

输出: 生成的XLD轮廓ContEllipse ;

9.gen_nurbs_interp( : : Rows, Cols, Tangents, Degree : CtrlRows, CtrlCols, Knots)

功能: 根据给定的插值点,创建NURBS曲线的控制数据;

输入: 所有交叉点的坐标Row、Col ;

输入: 交叉点的大小;

输入: 每个交叉点的角度Angle;

输出: 生成的XLD轮廓ContEllipse ;

10.gen_parallels_xld(Polygons : Parallels : Len, Dist, Alpha, Merge : )

功能: 提取平行的XLD多边形(polygon);

输入: 待提取的多边形轮廓 Polygons ;

输入: 提取长度超过Len的线段,投影距离小于Dist;

输入: 多边形最大角度差Alpha和是否合并相邻的平行关系Merge;

输出: 提取的平行XLD轮廓Parallels ;

11.gen_polygons_xld(Contours : Polygons : Type, Alpha : )

功能: 根据多边形近似创建XLD轮廓(contour);

输入: 想要逼近的XLD轮廓Contours ;

输入: 逼近的类型Type,主要为“ramer”算法;

输入: 逼近的阈值是通过Alpha 设置的;

输出: 近似后的轮廓Polygons ;

12.gen_rectangle2_contour_xld( : Rectangle : Row, Column, Phi, Length1, Length2 : )

功能: 创建一个Rect2矩形XLD轮廓(contour);

输入: Rect2的参数;

输出: 生成的XLD轮廓Rectangle ;

13.mod_parallels_xld(Parallels, Image : ModParallels, ExtParallels : Quality, MinGray, MaxGray, MaxStandard : )

功能: 提取封闭区域内的平行XLD多边形(polygon);

输入: 输入的XLD轮廓Parallels;

输入: 最小品质因数(并行度的度量)Quality;

输入: 设定最小灰度,最大灰度和最大标准偏差MaxStandard ;

输出: 返回的平行的XLD轮廓ModParallels;

输出: 扩展的XLD轮廓ExtParallels ;

1.affine_trans_contour_xld(Contours : ContoursAffineTrans : HomMat2D : )

功能: 对XLD轮廓(contour)进行任意二维仿射变换;

输入: 圆弧的圆心坐标,半径,起始角度和终止角度 ;

输入: 沿着圆弧点的方向(PointOrder),可选“positive”和“negative”;

输出: 创建的XLD对象ContCircle;

2.gen_contour_nurbs_xld( : Contour : Rows, Cols, Knots, Weights, Degree, MaxError, MaxDistance : )

功能: 将NURBS曲线转换为XLD轮廓;

输入: NURBS曲线的参数 ;

输出: 近似NURBS曲线的XLD轮廓;

3.gen_contour_polygon_rounded_xld( : Contour : Row, Col, Radius, SamplingInterval : )

功能: 根据一个带圆角的多边形(以元组形式给出)创建一个XLD轮廓;

输入: 多边形参数 ;

输出: 多边形生成的XLD轮廓;

4.gen_contour_polygon_xld( : Contour : Row, Col : )

功能: 根据一个多边形(以元组形式给出)创建一个XLD轮廓;

输入: 多边形点坐标Row,Col ;

输出: 多边形生成的XLD轮廓;

5.gen_contour_region_xld(Regions : Contours : Mode : )

功能: 根据区域Region创建XLD轮廓;

输入: 区域Region ;

输入: 模式Mode,“Center”,以边界像素的中心作为轮廓点;“border”,以边界像素的外边界作为轮廓点;“border_holes”,获取外边界同时可以获得所有孔的轮廓 ;

输出: 生成的XLD轮廓;

6.gen_contours_skeleton_xld(Skeleton : Contours : Length, Mode : )

功能: 将骨架转换为XLD轮廓(contour);

输入: 轮廓骨架Skeleton ;

输入: 提取轮廓线包含的最小点数;

输入: 输入过滤模式( 'filter', 'generalize1', 'generalize2');

'filter' ,因为轮廓线在端点被分割,所以会存在一种情况,就是即使很长的轮廓线也可能被分割成很多的短线,即使他们的长度大于设定参数Length

'generalize1',这种模式下,就可以避免长的轮廓被分割,而且长度小于参数Length的线段会被舍弃;

'generalize2' ,那么短的线段会被保留下来,只要线段有两个端点,即使长度小于参数Length,也会被保留。

输出: 生成的XLD轮廓;


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

原文地址: http://outofmemory.cn/tougao/11225515.html

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

发表评论

登录后才能评论

评论列表(0条)

保存