Add TetraPackOCR

This commit is contained in:
2025-12-23 10:19:58 +08:00
parent 446281afaa
commit 2a6e5cb0d0
25 changed files with 9688 additions and 26 deletions

View File

@@ -0,0 +1,157 @@
/********************************************
* 版本号V1.2
* 作者: 孙剑
* 最后修改时间2022年5月23日
*
* 类功能说明:
*
*
* 第一个方法:
* public static bool PMARunStatus(CogPMAlignTool pmaTool, int i) 可保证任何情况下使用PMATool的结果是可用的
* 不可用时返回false。程序不会报错和崩溃。
* -------------------------------------------
* 调用例程:
* double pmaRotation = 0;
* double pmaX = 0;
* double pmaY = 0;
* if (CPMARunStatus.PMARunStatus(myPMATool, 1))
{
pmaRotation = myPMATool.Results[i].GetPose().Rotation;
pmaX = myPMATool.Results[i].GetPose().TranslationX;
pmaY = myPMATool.Results[i].GetPose().TranslationY;
}
* --------------------------------------------
* 第二个方法 在cogRecordDisplay_0的控件上画出匹配的外形轮廓和十字标线
* 注意您如果没让PMATool图形显示您所要的轮廓线有可能不能画出
* CPMARunStatus.DrawPMA(myPMATool, cogRecordDisplay_0);
*
* 第三个方法只是画了一个自定义的十字。
*
* 备注画图的方法是在一个CogRecordDisplay上画出。
*
********************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cognex.VisionPro.PMAlign;
using Cognex.VisionPro;
namespace AVP.CRobot
{
/// <summary>
/// 返回CogPMAlignTool的运行结果,请调用PMARunStatus方法
/// </summary>
class CPMARunStatus
{
/// <summary>
/// 返回CogPMAlignTool的运行结果工具运行成功并且数量>=i 的时候返回true
/// </summary>
/// <param name="pmaTool">PMA工具Tool</param>
/// <param name="i">预期找到的数量</param>
/// <returns>数量>=i 的时候返回true</returns>
public static bool PMARunStatus(CogPMAlignTool pmaTool, int i)
{
if (pmaTool.RunStatus.Result == CogToolResultConstants.Accept)
{
if (pmaTool.Results.Count >= i)
return true;
}
return false;
}
/// <summary>
/// 利用输入的PMATool在CogRecordDisplay 上画出找到工件的轮廓
/// </summary>
/// <param name="pmaTool">输入的PMATool</param>
/// <param name="disp">输入要显示的CogRecordDisplay</param>
public static void DrawPMA(CogPMAlignTool pmaTool, CogRecordDisplay disp)
{
if (pmaTool.RunStatus.Result == CogToolResultConstants.Accept)
{
if (pmaTool.Results.Count > 0) //判断输入的PMATool是否有结果才可以画图
{
foreach (CogPMAlignResult item in pmaTool.Results)
{
disp.InteractiveGraphics.Add(item.CreateResultGraphics(CogPMAlignResultGraphicConstants.MatchFeatures),
"", false);
disp.InteractiveGraphics.Add(item.CreateResultGraphics(CogPMAlignResultGraphicConstants.CoordinateAxes), "", false);
}
}
}
}
/// <summary>
/// 画十字
/// </summary>
/// <param name="centerX"></param>
/// <param name="centerY"></param>
/// <param name="angle"></param>
/// <param name="color"></param>
/// <param name="myDisplay"></param>
/// <param name="spaceName"></param>
public static void DrawPointMarker(double centerX, double centerY, double angle, CogColorConstants color, CogRecordDisplay myDisplay, string spaceName)
{
CogPointMarker cgMarker = new CogPointMarker
{
X = centerX,
Y = centerY,
Rotation = angle, //弧度
Color = color,
SelectedSpaceName = spaceName,
Interactive = true,
LineWidthInScreenPixels = 2,
SizeInScreenPixels = 50
};
myDisplay.InteractiveGraphics.Add(cgMarker, null, false);
}
/// <summary>
/// 在给定的图像空间中画圆
/// </summary>
/// <param name="centerX"></param>
/// <param name="centerY"></param>
/// <param name="color"></param>
/// <param name="myDisplay"></param>
/// <param name="spaceName"></param>
public static void DrawCircle(double centerX, double centerY, CogColorConstants color, CogRecordDisplay myDisplay, string spaceName)
{
CogCircle cgCirlcle = new CogCircle
{
CenterX = centerX,
CenterY = centerY,
Color = color,
SelectedSpaceName = spaceName
};
myDisplay.InteractiveGraphics.Add(cgCirlcle, null, false);
}
/// <summary>
/// 在给定的图像空间中画线段
/// </summary>
/// <param name="startX"></param>
/// <param name="startY"></param>
/// <param name="endX"></param>
/// <param name="endY"></param>
/// <param name="color"></param>
/// <param name="myDisplay"></param>
/// <param name="spaceName"></param>
public static void DrawLineSegment(double startX, double startY, double endX, double endY, CogColorConstants color, CogRecordDisplay myDisplay, string spaceName)
{
CogLineSegment cgLineSegment = new CogLineSegment
{
StartX = startX,
StartY = startY,
EndX = endX,
EndY = endY,
Color = color,
SelectedSpaceName = spaceName,
StartPointAdornment = CogLineSegmentAdornmentConstants.Arrow,
EndPointAdornment = CogLineSegmentAdornmentConstants.Arrow
};
myDisplay.InteractiveGraphics.Add(cgLineSegment, null, false);
}
}
}