Add CenterOfGravity detection / Add reward function

This commit is contained in:
Tobi
2019-05-17 18:23:24 +02:00
parent 7317135cd3
commit a7dd5527bb
11 changed files with 1152 additions and 44 deletions
@@ -4,9 +4,10 @@ using UnityEngine;
using OpenCvSharp;
using System.Threading.Tasks;
public class OnRenderImageTest : MonoBehaviour
public class ImageProcessor : MonoBehaviour
{
public MeshRenderer processedImageRenderer;
public Point CenterOfGravity { get; private set; }
// OpenCVSharp parameters
private Mat videoSourceImage;
@@ -41,6 +42,7 @@ public class OnRenderImageTest : MonoBehaviour
Texture2D tex = RenderTextureToTexture2D(source);
videoSourceImage = TextureToMat(tex);
cannyImage = ProcessImage(videoSourceImage);
CenterOfGravityTest(cannyImage);
processedTexture = MatToTexture(cannyImage);
Graphics.Blit(processedTexture, destination);
}
@@ -124,4 +126,18 @@ public class OnRenderImageTest : MonoBehaviour
texture.Apply();
return texture;
}
private void CenterOfGravityTest(Mat processedImage)
{
// find moments of the image
Moments m = new Moments(processedImage, true);
CenterOfGravity = new Point(m.M10 / m.M00, m.M01 / m.M00);
// show the image with a point mark at the centroid
Cv2.Circle(processedImage, CenterOfGravity, 5, new Scalar(128, 0, 0), -1);
Cv2.Flip(processedImage, processedImage, FlipMode.X);
Cv2.ImShow("Image with center", processedImage);
//Cv2.WaitKey(0);
}
}