finished candybox
This commit is contained in:
@@ -5,6 +5,7 @@ using OpenCvSharp;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Text.Json;
|
||||
using Lindt.Candybox.Demo;
|
||||
using VisionBuilder.UI.Common.NullClasses;
|
||||
using Point = System.Drawing.Point;
|
||||
using Size = OpenCvSharp.Size;
|
||||
@@ -53,12 +54,12 @@ namespace CandyboxPlugin.Recipe
|
||||
}
|
||||
}
|
||||
|
||||
public void LearnContours(OpenCvSharp.Point[][] contours, Mat image)
|
||||
public void LearnContours(OpenCvSharp.Point[][] contours, Mat image, List<VectorLine> cuts)
|
||||
{
|
||||
lock (_lockObject)
|
||||
{
|
||||
|
||||
|
||||
_learnedParameters.Cuts = cuts;
|
||||
if (_learnedParameters.CandyParameters.Count == 0)//initial learning
|
||||
{
|
||||
_learnedParameters.BlisterAngle = _blisterAngle;
|
||||
@@ -80,8 +81,8 @@ namespace CandyboxPlugin.Recipe
|
||||
};
|
||||
p.Histogram.Enqueue(histData);
|
||||
_learnedParameters.CandyParameters.Add(p);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -156,6 +157,15 @@ namespace CandyboxPlugin.Recipe
|
||||
Mat res = _learner.Eval(resized);
|
||||
Mat resBlister = _blister.Eval(resized);
|
||||
|
||||
|
||||
var element = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(50, 50));
|
||||
Mat blisterOpened = resBlister.Threshold(128,255,ThresholdTypes.Binary).MorphologyEx(MorphTypes.Open,element);
|
||||
|
||||
|
||||
resBlister.Dispose();
|
||||
resBlister = blisterOpened;
|
||||
Cv2.WaitKey(1);
|
||||
|
||||
sw1.Stop();
|
||||
Console.WriteLine("AI Time:" + sw1.ElapsedMilliseconds);
|
||||
Mat inverted = null;
|
||||
@@ -195,32 +205,33 @@ 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
|
||||
);
|
||||
}
|
||||
//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(
|
||||
@@ -257,7 +268,19 @@ namespace CandyboxPlugin.Recipe
|
||||
// );
|
||||
//}
|
||||
}
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
//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);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Point = System.Drawing.Point;
|
||||
using Lindt.Candybox.Demo;
|
||||
using Point = System.Drawing.Point;
|
||||
|
||||
namespace CandyboxPlugin.Recipe
|
||||
{
|
||||
@@ -9,5 +10,6 @@ namespace CandyboxPlugin.Recipe
|
||||
public Point BlisterPosition { get; set; }
|
||||
public List<CandyParameter> CandyParameters { get; set; } = new List<CandyParameter>();
|
||||
public int ImageWidth { get; set; } = 1800;
|
||||
public List<VectorLine> Cuts { get; set; } = new List<VectorLine>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user