VisionPro坐标怎么转换?VisionPro坐标空间树Coordinate Space Tree中提供了将坐标转换为不同空间的方法。用户在将像素坐标变换为物理坐标时,可以使用该方法快速转换。
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方法取得二维转换对象。
评论 (5)
CogTransform2DLinear xform1 = new CogTransform2DLinear();
xform1 = (CogTransform2DLinear)nptp1.Calibration.GetComputedUncalibratedFromCalibratedTransform();
xform1.MapPoint(CamMx, CamMy, out qx1, out qy1);
Debug.WriteLine("QX1---{0}",qx1);
Debug.WriteLine("QY1---{0}", qy1);
ofd.FileName是什么这个该怎么搞是toolblock文件吗还是其他文件