修改框架(未完全完成)实现单个相机分开绑定算法

This commit is contained in:
2025-10-20 17:47:48 +08:00
parent 31d9f8d6b6
commit 73249ee6c2
11 changed files with 1226 additions and 422 deletions

View File

@@ -0,0 +1,57 @@
using HalconTemplateMatch;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace Check.Main.Infer
{
public class HalconTemplateDetector : IDetector
{
private LogoMatcher _matcher; // 使用您现有的 LogoMatcher
private double _scoreThreshold = 0.5; // 可以从 ModelSettings 中配置
public void Initialize(string modelPath, object detectionSettings = null)
{
_matcher = new LogoMatcher();
_matcher.LoadTemplates(modelPath); // modelPath 现在是 Halcon 模板目录
// 如果 detectionSettings 包含阈值,可以在这里解析
if (detectionSettings is HalconDetectionSettings halconSettings)
{
_scoreThreshold = halconSettings.ScoreThreshold;
}
}
public DetectionResult Detect(Bitmap image)
{
if (_matcher == null)
throw new InvalidOperationException("HalconTemplateDetector 未初始化。");
Bitmap resultImage;
double score = _matcher.FindLogo(image, out resultImage);
bool isOk = score >= _scoreThreshold;
string message = isOk ? "OK" : "NG";
// 如果需要绘制结果图像,可以在 LogoMatcher 中添加绘制逻辑并返回
// 假设 LogoMatcher 也可以返回一个带有匹配标记的 Bitmap
// Bitmap resultImage = _matcher.DrawResults(image, score);
return new DetectionResult(isOk, message, score); //, resultImage
}
public void Dispose()
{
// LogoMatcher 如果有需要释放的资源,可以在这里处理
}
}
// 辅助设置类,用于传递给 HalconTemplateDetector
public class HalconDetectionSettings
{
public double ScoreThreshold { get; set; } = 0.5;
// 可以添加其他 Halcon 匹配参数
}
}