|
楼主 |
发表于 2023-3-8 09:25:33
|
显示全部楼层
继续,定位跟随还得连接fixture?
如果您要使用VisionPro的Blob工具进行定位跟随,则需要使用一个固定装置来保持相机和被检测对象的相对位置不变。这通常称为夹具或fixture。夹具可以确保相机始终以相同的位置和角度拍摄被检测对象,从而保证定位跟随的准确性和可重复性。
夹具通常由机械部件和固定夹具组成。机械部件是夹具的机械结构,可以将被检测对象保持在正确的位置和方向。固定夹具是将机械部件固定在相机上的固定装置,可以确保相机和机械部件的位置保持不变。
一旦您已经设置了夹具,您可以使用VisionPro的跟踪工具来跟踪被检测对象,并在相机拍摄的连续帧中检测到其位置。如果对象位置发生变化,则跟踪工具将自动更新其位置,并向您提供新的位置信息。因此,通过使用夹具和跟踪工具,您可以轻松地实现定位跟随的功能。
yanhua.huang2020@gmail.com
继续,写段c#代码描述上述过程
以下是使用C#代码描述如何使用VisionPro的跟踪工具进行定位跟随的过程:
csharp
Copy code
// 声明视觉工具类和视觉结果类
CogBlobTool blobTool;
CogPatternMatcher patternMatcher;
// 初始化视觉工具
blobTool = new CogBlobTool();
patternMatcher = new CogPatternMatcher();
// 添加终端(所有)以便可以访问所有结果
blobTool.ResultsTerminalCollection.Add(new CogBlobToolResultsAll());
// 定义夹具位置
double fixtureX = 100;
double fixtureY = 100;
double fixtureRotation = 0;
// 设置夹具位置和旋转角度
patternMatcher.PatternOrigin.TranslationX = fixtureX;
patternMatcher.PatternOrigin.TranslationY = fixtureY;
patternMatcher.PatternOrigin.Rotation = fixtureRotation;
// 运行视觉工具以检测对象并获取结果
CogBlobResults blobResults = blobTool.Run(inputImage);
// 获取对象的中心点坐标
double blobX = blobResults.GetCenterPixelX(0);
double blobY = blobResults.GetCenterPixelY(0);
// 设置模板匹配的搜索区域
patternMatcher.SearchRegion = new CogRectangle(blobX - 50, blobY - 50, 100, 100);
// 运行模板匹配以跟踪对象
CogPMAlignResults matchResults = patternMatcher.Run(inputImage, null);
// 获取匹配结果中的位置信息
double trackedX = matchResults.Origin.TranslationX;
double trackedY = matchResults.Origin.TranslationY;
// 输出结果
Console.WriteLine("Object position: ({0}, {1})", blobX, blobY);
Console.WriteLine("Tracked position: ({0}, {1})", trackedX, trackedY);
上述代码首先创建了一个CogBlobTool对象和一个CogPatternMatcher对象,分别表示Blob工具和Pattern Matching工具。然后,通过将所有终端添加到结果集合中,可以访问所有结果。
接下来,使用patternMatcher.PatternOrigin属性设置夹具的位置和旋转角度。在运行视觉工具以检测对象并获取结果后,使用blobResults.GetCenterPixelX和blobResults.GetCenterPixelY方法获取对象的中心点坐标。然后,将这些坐标用于设置模板匹配的搜索区域。
最后,使用patternMatcher.Run方法运行模板匹配以跟踪对象,并使用matchResults.Origin.TranslationX和matchResults.Origin.TranslationY属性获取匹配结果中的位置信息。最后,使用Console.WriteLine语句输出结果。
请注意,此处假设在上下文中已经存在名为inputImage的CogImage对象,它表示输入图像。另外,此代码只是展示了如何进行定位跟随的基本过程,实际应用可能需要更复杂的代码来处理各种情况。 |
|