2.0.9
This commit is contained in:
@@ -54,12 +54,17 @@ namespace CandyboxPlugin.Recipe
|
||||
}
|
||||
}
|
||||
|
||||
public void LearnContours(OpenCvSharp.Point[][] contours, Mat image, List<VectorLine> cuts)
|
||||
public void LearnContours(OpenCvSharp.Point[][] contours, Mat image, List<VectorLine> cuts, bool relearn)
|
||||
{
|
||||
lock (_lockObject)
|
||||
{
|
||||
|
||||
_learnedParameters = relearn ? new LearningParameters() : _learnedParameters;
|
||||
|
||||
// Convert cuts to be relative to blister center
|
||||
|
||||
|
||||
_learnedParameters.Cuts = cuts;
|
||||
|
||||
if (_learnedParameters.CandyParameters.Count == 0)//initial learning
|
||||
{
|
||||
_learnedParameters.BlisterAngle = _blisterAngle;
|
||||
@@ -131,6 +136,8 @@ namespace CandyboxPlugin.Recipe
|
||||
return clone;
|
||||
}
|
||||
|
||||
public Point BlisterCenter => _blisterCenter;
|
||||
|
||||
public ProcessingResult ProcessImage(Mat image)
|
||||
{
|
||||
lock (_lockObject)
|
||||
@@ -166,7 +173,7 @@ namespace CandyboxPlugin.Recipe
|
||||
|
||||
resBlister.Dispose();
|
||||
resBlister = blisterOpened;
|
||||
Cv2.WaitKey(1);
|
||||
|
||||
|
||||
sw1.Stop();
|
||||
Console.WriteLine("AI Time:" + sw1.ElapsedMilliseconds);
|
||||
@@ -207,44 +214,6 @@ namespace CandyboxPlugin.Recipe
|
||||
))
|
||||
.ToList());
|
||||
|
||||
//var dbg=triangles.Where(x => x.IsInside(points[15])).ToList();
|
||||
//var dbgEdges = Voronoi.Voronoi.GenerateEdgesFromDelaunay(dbg);
|
||||
//foreach (var triangle in dbg)
|
||||
//{
|
||||
// Cv2.Line(
|
||||
// numbersOverlay,
|
||||
// new OpenCvSharp.Point(triangle.Vertices[0].X, triangle.Vertices[0].Y),
|
||||
// new OpenCvSharp.Point(triangle.Vertices[1].X, triangle.Vertices[1].Y),
|
||||
// new Scalar(255, 255, 0, 255), // Aqua color in BGR
|
||||
// 1 // Thickness
|
||||
// );
|
||||
// Cv2.Line(
|
||||
// numbersOverlay,
|
||||
// new OpenCvSharp.Point(triangle.Vertices[1].X, triangle.Vertices[1].Y),
|
||||
// new OpenCvSharp.Point(triangle.Vertices[2].X, triangle.Vertices[2].Y),
|
||||
// new Scalar(255, 255, 0, 255), // Aqua color in BGR
|
||||
// 1 // Thickness
|
||||
// );
|
||||
// Cv2.Line(
|
||||
// numbersOverlay,
|
||||
// new OpenCvSharp.Point(triangle.Vertices[2].X, triangle.Vertices[2].Y),
|
||||
// new OpenCvSharp.Point(triangle.Vertices[0].X, triangle.Vertices[0].Y),
|
||||
// new Scalar(255, 255, 0, 255), // Aqua color in BGR
|
||||
// 1 // Thickness
|
||||
// );
|
||||
//}
|
||||
|
||||
//foreach (Edge edge in dbgEdges)
|
||||
//{
|
||||
// Cv2.Line(
|
||||
// numbersOverlay,
|
||||
// new OpenCvSharp.Point(edge.Point1.X, edge.Point1.Y),
|
||||
// new OpenCvSharp.Point(edge.Point2.X, edge.Point2.Y),
|
||||
// new Scalar(255, 255, 255, 255),
|
||||
// 3 // Thickness
|
||||
// );
|
||||
//}
|
||||
|
||||
|
||||
var edges = Voronoi.Voronoi.GenerateEdgesFromDelaunay(triangles);
|
||||
foreach (Edge edge in edges)
|
||||
@@ -258,31 +227,22 @@ namespace CandyboxPlugin.Recipe
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//foreach (Edge edge in edges)
|
||||
//{
|
||||
// Cv2.Line(
|
||||
// numbersOverlay,
|
||||
// new OpenCvSharp.Point(edge.Point1.X, edge.Point1.Y),
|
||||
// new OpenCvSharp.Point(edge.Point2.X, edge.Point2.Y),
|
||||
// new Scalar(255, 255, 255, 255),
|
||||
// 3 // Thickness
|
||||
// );
|
||||
//}
|
||||
}
|
||||
foreach (VectorLine cut in _learnedParameters.Cuts)
|
||||
{
|
||||
Cv2.Line(res, new OpenCvSharp.Point(cut.StartPoint.X, cut.StartPoint.Y),
|
||||
new OpenCvSharp.Point(cut.EndPoint.X, cut.EndPoint.Y), new Scalar(0, 0, 0), 3);
|
||||
|
||||
// Convert from relative to absolute coordinates
|
||||
var absoluteStart = new OpenCvSharp.Point(
|
||||
cut.StartPoint.X + _blisterCenter.X,
|
||||
cut.StartPoint.Y + _blisterCenter.Y
|
||||
);
|
||||
var absoluteEnd = new OpenCvSharp.Point(
|
||||
cut.EndPoint.X + _blisterCenter.X,
|
||||
cut.EndPoint.Y + _blisterCenter.Y
|
||||
);
|
||||
|
||||
Cv2.Line(res, absoluteStart, absoluteEnd, new Scalar(0, 0, 0), 3);
|
||||
}
|
||||
|
||||
//foreach (VectorLine cut in _learnedParameters.Cuts)
|
||||
//{
|
||||
// Cv2.Line(numbersOverlay, new OpenCvSharp.Point(cut.StartPoint.X, cut.StartPoint.Y),
|
||||
// new OpenCvSharp.Point(cut.EndPoint.X, cut.EndPoint.Y), new Scalar(255, 0, 255,255), 3);
|
||||
|
||||
//}
|
||||
|
||||
var mat = res;
|
||||
Cv2.Threshold(mat, mat, 128, 255, ThresholdTypes.Binary);
|
||||
|
||||
Reference in New Issue
Block a user