添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using Maxwell.SemiFramework.DefaultConfig.Vision;
|
||||
using MwFramework.Device.Model;
|
||||
using SemiconductorVisionAlgorithm.SemiParams;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MainShell.Vision.Common
|
||||
{
|
||||
public static class CameraImageTypeConverter
|
||||
{
|
||||
public static SemiconductorVisionAlgorithm.SemiParams.Camera ToSemiCamera(this CameraData image)
|
||||
{
|
||||
Camera camera = new Camera();
|
||||
if (image != null)
|
||||
{
|
||||
camera.Ptr = ImageHelper.GetImageHandle(image);
|
||||
camera.Height = (int)image.Height;
|
||||
camera.Width = (int)image.Width;
|
||||
}
|
||||
return camera;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// 模板类视觉算法参数基类
|
||||
/// </summary>
|
||||
public abstract class TemplateVisionAlgorithmParameters : VisionAlgorithmParameters
|
||||
{
|
||||
protected TemplateVisionAlgorithmParameters()
|
||||
{
|
||||
MinScore = 0.8d;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 模板路径
|
||||
/// </summary>
|
||||
public string TemplatePath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最小匹配分数
|
||||
/// </summary>
|
||||
public double MinScore { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// 视觉算法参数基类
|
||||
/// </summary>
|
||||
public abstract class VisionAlgorithmParameters
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
using MainShell.Common;
|
||||
using System;
|
||||
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// <20>Ӿ<EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><DCB7>ࡣ
|
||||
/// </summary>
|
||||
public enum VisionFailureCategory
|
||||
{
|
||||
None = 0,
|
||||
Validation = 1,
|
||||
Cancelled = 2,
|
||||
Capture = 3,
|
||||
Algorithm = 4,
|
||||
Driver = 5,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>붨<EFBFBD>塣
|
||||
/// </summary>
|
||||
public enum VisionErrorCode
|
||||
{
|
||||
None = 0,
|
||||
|
||||
RequestInvalid = 1000,
|
||||
TimeoutInvalid = 1001,
|
||||
TemplatePathEmpty = 1002,
|
||||
RoiNameEmpty = 1003,
|
||||
MinScoreInvalid = 1004,
|
||||
|
||||
OperationCancelled = 1100,
|
||||
|
||||
CameraNotFound = 1200,
|
||||
CameraNotOpen = 1201,
|
||||
CameraNotGrabbing = 1202,
|
||||
CaptureTimeout = 1203,
|
||||
NoFrame = 1204,
|
||||
SoftTriggerFailed = 1205,
|
||||
DriverError = 1206,
|
||||
ImageNull = 1207,
|
||||
|
||||
TemplateAlgorithmNotImplemented = 1300,
|
||||
TemplateMatchFailed = 1301,
|
||||
TemplateResultInvalid = 1302,
|
||||
CommonAlgorithmNotSupported = 1400,
|
||||
CommonAlgorithmExecutionFailed = 1401,
|
||||
ChipMapSortInputInvalid = 1402,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Vision <20><><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6>塣
|
||||
/// </summary>
|
||||
public static class VisionAlarmIds
|
||||
{
|
||||
public const int CameraNotFound = 13000;
|
||||
public const int CameraNotOpen = 13001;
|
||||
public const int CameraNotGrabbing = 13002;
|
||||
public const int CaptureTimeout = 13003;
|
||||
public const int NoFrame = 13004;
|
||||
public const int SoftTriggerFailed = 13005;
|
||||
public const int DriverError = 13006;
|
||||
public const int ImageNull = 13007;
|
||||
public const int RequestInvalid = 13008;
|
||||
|
||||
public const int TemplatePathEmpty = 13100;
|
||||
public const int TemplateRoiInvalid = 13103;
|
||||
public const int TemplateMinScoreInvalid = 13104;
|
||||
public const int TemplateAlgorithmNotImplemented = 13105;
|
||||
public const int TemplateMatchFailed = 13106;
|
||||
public const int TemplateResultInvalid = 13107;
|
||||
public const int CommonAlgorithmNotSupported = 13200;
|
||||
public const int CommonAlgorithmExecutionFailed = 13201;
|
||||
public const int ChipMapSortInputInvalid = 13202;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Vision <20><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ࡣ
|
||||
/// </summary>
|
||||
public static class VisionResultMapper
|
||||
{
|
||||
public static VisionProcessResult CreateCaptureFailure(ImageCaptureResult captureResult)
|
||||
{
|
||||
if (captureResult == null)
|
||||
{
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.NoFrame,
|
||||
VisionAlarmIds.NoFrame,
|
||||
MessageKey.VisionNoFrameReturned,
|
||||
"Vision capture result is null.");
|
||||
}
|
||||
|
||||
switch (captureResult.Status)
|
||||
{
|
||||
case ImageCaptureStatus.Cancelled:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Cancelled,
|
||||
VisionErrorCode.OperationCancelled,
|
||||
null,
|
||||
MessageKey.VisionOperationCancelled,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.CameraNotFound:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.CameraNotFound,
|
||||
VisionAlarmIds.CameraNotFound,
|
||||
MessageKey.VisionCameraNotFound,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.CameraNotOpen:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.CameraNotOpen,
|
||||
VisionAlarmIds.CameraNotOpen,
|
||||
MessageKey.VisionCameraNotOpen,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.CameraNotGrabbing:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.CameraNotGrabbing,
|
||||
VisionAlarmIds.CameraNotGrabbing,
|
||||
MessageKey.VisionCameraNotGrabbing,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.Timeout:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.CaptureTimeout,
|
||||
VisionAlarmIds.CaptureTimeout,
|
||||
MessageKey.VisionCaptureTimeout,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.NoFrame:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Capture,
|
||||
VisionErrorCode.NoFrame,
|
||||
VisionAlarmIds.NoFrame,
|
||||
MessageKey.VisionNoFrameReturned,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
case ImageCaptureStatus.SoftTriggerFailed:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Driver,
|
||||
VisionErrorCode.SoftTriggerFailed,
|
||||
VisionAlarmIds.SoftTriggerFailed,
|
||||
MessageKey.VisionSoftTriggerFailed,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
|
||||
default:
|
||||
return VisionProcessResult.Failure(
|
||||
VisionFailureCategory.Driver,
|
||||
VisionErrorCode.DriverError,
|
||||
VisionAlarmIds.DriverError,
|
||||
MessageKey.VisionDriverError,
|
||||
captureResult.Message,
|
||||
captureResult.Exception);
|
||||
}
|
||||
}
|
||||
|
||||
public static int? GetAlarmId(VisionErrorCode errorCode)
|
||||
{
|
||||
switch (errorCode)
|
||||
{
|
||||
case VisionErrorCode.RequestInvalid:
|
||||
case VisionErrorCode.TimeoutInvalid:
|
||||
return VisionAlarmIds.RequestInvalid;
|
||||
|
||||
case VisionErrorCode.TemplatePathEmpty:
|
||||
return VisionAlarmIds.TemplatePathEmpty;
|
||||
|
||||
case VisionErrorCode.RoiNameEmpty:
|
||||
return VisionAlarmIds.TemplateRoiInvalid;
|
||||
|
||||
case VisionErrorCode.MinScoreInvalid:
|
||||
return VisionAlarmIds.TemplateMinScoreInvalid;
|
||||
|
||||
case VisionErrorCode.CameraNotFound:
|
||||
return VisionAlarmIds.CameraNotFound;
|
||||
|
||||
case VisionErrorCode.CameraNotOpen:
|
||||
return VisionAlarmIds.CameraNotOpen;
|
||||
|
||||
case VisionErrorCode.CameraNotGrabbing:
|
||||
return VisionAlarmIds.CameraNotGrabbing;
|
||||
|
||||
case VisionErrorCode.CaptureTimeout:
|
||||
return VisionAlarmIds.CaptureTimeout;
|
||||
|
||||
case VisionErrorCode.NoFrame:
|
||||
return VisionAlarmIds.NoFrame;
|
||||
|
||||
case VisionErrorCode.SoftTriggerFailed:
|
||||
return VisionAlarmIds.SoftTriggerFailed;
|
||||
|
||||
case VisionErrorCode.DriverError:
|
||||
return VisionAlarmIds.DriverError;
|
||||
|
||||
case VisionErrorCode.ImageNull:
|
||||
return VisionAlarmIds.ImageNull;
|
||||
|
||||
case VisionErrorCode.TemplateAlgorithmNotImplemented:
|
||||
return VisionAlarmIds.TemplateAlgorithmNotImplemented;
|
||||
|
||||
case VisionErrorCode.TemplateMatchFailed:
|
||||
return VisionAlarmIds.TemplateMatchFailed;
|
||||
|
||||
case VisionErrorCode.TemplateResultInvalid:
|
||||
return VisionAlarmIds.TemplateResultInvalid;
|
||||
|
||||
case VisionErrorCode.CommonAlgorithmNotSupported:
|
||||
return VisionAlarmIds.CommonAlgorithmNotSupported;
|
||||
|
||||
case VisionErrorCode.CommonAlgorithmExecutionFailed:
|
||||
return VisionAlarmIds.CommonAlgorithmExecutionFailed;
|
||||
|
||||
case VisionErrorCode.ChipMapSortInputInvalid:
|
||||
return VisionAlarmIds.ChipMapSortInputInvalid;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public class VisionMatchResult
|
||||
{
|
||||
public VisionMatchResult()
|
||||
{
|
||||
}
|
||||
|
||||
public VisionMatchResult(double offsetX, double offsetY, double angle = 0.0, double score = 1.0)
|
||||
{
|
||||
OffsetX = offsetX;
|
||||
OffsetY = offsetY;
|
||||
Angle = angle;
|
||||
Score = score;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// X ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public double OffsetX { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Y ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public double OffsetY { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20>Ƕȡ<C7B6>
|
||||
/// </summary>
|
||||
public double Angle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public double Score { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><>ǩ<EFBFBD><C7A9>
|
||||
/// </summary>
|
||||
public string Tag { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
using MainShell.Common;
|
||||
using System;
|
||||
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// <20>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public class VisionProcessResult
|
||||
{
|
||||
/// <summary>
|
||||
/// <20>Ƿ<EFBFBD>ִ<EFBFBD>гɹ<D0B3>
|
||||
/// </summary>
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public VisionFailureCategory FailureCategory { get; set; }
|
||||
|
||||
public VisionErrorCode ErrorCode { get; set; }
|
||||
|
||||
public int? AlarmId { get; set; }
|
||||
|
||||
public MessageKey UserMessageKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD>û<EFBFBD><C3BB>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Ϣ
|
||||
/// </summary>
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>ʱ<EFBFBD><CAB1><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public Exception Exception { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public static VisionProcessResult Success()
|
||||
{
|
||||
return new VisionProcessResult
|
||||
{
|
||||
Succeeded = true,
|
||||
FailureCategory = VisionFailureCategory.None,
|
||||
ErrorCode = VisionErrorCode.None,
|
||||
AlarmId = null,
|
||||
UserMessageKey = MessageKey.None,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
|
||||
/// </summary>
|
||||
public static VisionProcessResult Failure(
|
||||
VisionFailureCategory failureCategory,
|
||||
VisionErrorCode errorCode,
|
||||
int? alarmId,
|
||||
MessageKey userMessageKey,
|
||||
string message,
|
||||
Exception exception = null)
|
||||
{
|
||||
return new VisionProcessResult
|
||||
{
|
||||
Succeeded = false,
|
||||
FailureCategory = failureCategory,
|
||||
ErrorCode = errorCode,
|
||||
AlarmId = alarmId,
|
||||
UserMessageKey = userMessageKey,
|
||||
Message = message,
|
||||
Exception = exception,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using MainShell.Common;
|
||||
using System;
|
||||
|
||||
namespace MainShell.Vision
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <typeparam name="TData"><3E>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></typeparam>
|
||||
public class VisionProcessResult<TData> : VisionProcessResult
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public TData Data { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public static VisionProcessResult<TData> Success(TData data)
|
||||
{
|
||||
return new VisionProcessResult<TData>
|
||||
{
|
||||
Succeeded = true,
|
||||
FailureCategory = VisionFailureCategory.None,
|
||||
ErrorCode = VisionErrorCode.None,
|
||||
AlarmId = null,
|
||||
UserMessageKey = MessageKey.None,
|
||||
Data = data,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
|
||||
/// </summary>
|
||||
public new static VisionProcessResult<TData> Failure(
|
||||
VisionFailureCategory failureCategory,
|
||||
VisionErrorCode errorCode,
|
||||
int? alarmId,
|
||||
MessageKey userMessageKey,
|
||||
string message,
|
||||
Exception exception = null)
|
||||
{
|
||||
return new VisionProcessResult<TData>
|
||||
{
|
||||
Succeeded = false,
|
||||
FailureCategory = failureCategory,
|
||||
ErrorCode = errorCode,
|
||||
AlarmId = alarmId,
|
||||
UserMessageKey = userMessageKey,
|
||||
Message = message,
|
||||
Exception = exception,
|
||||
Data = default(TData),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user