让代码更简单

当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

C#实现VisionPro坐标空间树的Transform2D坐标转换

重要:本文最后更新于2020-03-25 08:25:52,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

VisionPro坐标怎么转换?VisionPro坐标空间树Coordinate Space Tree中提供了将坐标转换为不同空间的方法。用户在将像素坐标变换为物理坐标时,可以使用该方法快速转换。

C#实现VisionPro坐标空间树的Transform2D坐标转换

C#实现VisionPro坐标空间树的Transform2D坐标转换

VisionPro二维转换对象

VisionPro坐标空间树包含一些函数,可用于获取映射坐标空间树中任意两个空间之间的点的转换对象。从坐标空间树获取变换的最常用方法是调用VisionPro图像对象的GetTransform方法。GetTransform允许您提取映射树中任意两个空间之间的点的转换。它还允许您获得到或从特殊像素空间“#”的转换。您还可以将图像的GetTransform方法与部分限定名一起使用,例如“.”(当前选定的空间名称)。

基本的VisionPro二维转换作为icogtransformorm2d接口实现。此接口实现一般的二维转换。潜在的变换可以是线性或非线性变换。对于在两个空间之间映射点,可以使用此对象的MapPoint方法。

但是,一般来说,你的应用程序不需要关心转换是线性的还是非线性的。在大多数情况下,只需使用icogtransformm2d接口来映射空间之间的点。如果知道icogtransformm2d接口的实际转换是线性的,并且希望使用特定于线性转换的功能,则可以使用icogtransformm2d接口的LinearTransform方法来获取新的cogttransform2dlinear对象。

你应该注意,更改此新转换的属性值不会更改原始转换的值。如果要从未知的转换类型转换,则应该使用C++中的QueryInterface来确定转换是否具有COGTURCTURL 2DLIDE接口。如果QueryInterface成功,则可以将原始对象用作线性变换,并可以直接更改其值。在Visual Basic中,您可以简单地将transform对象分配给声明为CogTransform2DLinear对象的变量。

CogTransform2DLinear表示特定的2D线性变换。可以修改CogTransform2DLinear的任何或所有组件,还可以使用它在坐标空间之间映射点、矢量和区域。

更多转换原理请查阅文档Transformations页。

C#坐标转换方法

加载CogCalibNPointToNPointTool工具对象

CogCalibNPointToNPointTool nptp = (CogCalibNPointToNPointTool)CogSerializer.LoadObjectFromFile(ofd.FileName);

我这里直接用以前项目的CogCalibNPointToNPointTool工具对象,有需要可以自己用代码实例化一个。

使用上面的介绍中说到的,VisionPro二维转换对象的图像对象的GetTransform方法得到二维转换对象。

 CogTransform2DLinear xform = (CogTransform2DLinear)nptp.OutputImage.GetTransform(nptp.OutputImage.SelectedSpaceName, "@");

使用二维转换对象的MapPoint方法进行转换

double x, y;
xform.MapPoint(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text), out x, out y);
label1.Text = "X:" + x + "   Y:" + y;

另:CogDisplay、CogRecordDispaly等显示控件也可使用GetTransform方法取得二维转换对象。

感觉很棒!可以赞赏支持我哟~

赞(1) 打赏

评论 抢沙发

×

请作者吃根烤肠!

支付宝