Add CenterOfGravity detection / Add reward function
This commit is contained in:
+17
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user