几何尺寸与公差论坛

 找回密码
 注册
查看: 1162|回复: 3

visionpro的blob工具掩膜区域可以做定位跟随不?

  [复制链接]
发表于 2023-3-8 09:21:43 | 显示全部楼层 |阅读模式
VisionPro的Blob工具是用于在图像中检测并定位二进制对象的工具。要在图像中进行定位跟踪,您可以结合使用Blob工具和其他VisionPro工具。

首先,您可以使用Blob工具来检测并定位对象。然后,使用定位结果作为输入来执行跟踪操作。VisionPro中的跟踪工具包括Pattern Matching、PatMax、SemiGlobal Matching等,它们可以根据先前帧中的位置信息对对象进行跟踪。如果对象位置发生变化,则这些跟踪工具将检测到这些变化,并更新对象的位置。

如果您想实现更复杂的跟踪任务,例如跟随多个对象或跟随运动的对象,那么您可能需要结合使用多个VisionPro工具和编程技术来实现此目的。
 楼主| 发表于 2023-3-8 09:23:09 | 显示全部楼层
继续,blob工具--添加终端(所有)--Result---有个image ...(copy)这个X和Y都添加出来,写段c#代码描述上述过程
 楼主| 发表于 2023-3-8 09:23:26 | 显示全部楼层
以下是使用C#代码描述如何使用VisionPro的Blob工具来获取定位结果并提取X和Y坐标的过程:

csharp
Copy code
// 声明视觉工具类和视觉结果类
CogBlobTool blobTool;
CogBlobResults blobResults;

// 初始化视觉工具
blobTool = new CogBlobTool();

// 添加终端(所有)以便可以访问所有结果
blobTool.ResultsTerminalCollection.Add(new CogBlobToolResultsAll());

// 运行视觉工具以检测对象并获取结果
blobResults = blobTool.Run(inputImage);

// 获取定位结果中的Image属性
ICogImage blobImage = blobResults.GetBlobImage(CogBlobResultConstants.ExtractedImage);

// 获取对象的中心点坐标
double x = blobResults.GetCenterPixelX(0);
double y = blobResults.GetCenterPixelY(0);

// 输出结果
Console.WriteLine("X坐标:{0}", x);
Console.WriteLine("Y坐标:{0}", y);
上述代码创建了一个CogBlobTool对象,该对象表示VisionPro中的Blob工具。然后,通过将所有终端添加到结果集合中,可以访问所有结果。然后,使用Run方法运行视觉工具以检测输入图像中的对象并获取结果。

从结果中,可以使用GetBlobImage方法提取检测到的对象的图像,并使用GetCenterPixelX和GetCenterPixelY方法获取该对象的中心点坐标。最后,使用Console.WriteLine语句输出结果。

请注意,此处假设在上下文中已经存在名为inputImage的CogImage对象,它表示输入图像。
 楼主| 发表于 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对象,它表示输入图像。另外,此代码只是展示了如何进行定位跟随的基本过程,实际应用可能需要更复杂的代码来处理各种情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-22 00:30 , Processed in 0.040857 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表