using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using OpenCVForUnity.CoreModule;
using OpenCVForUnity.ImgprocModule;
using OpenCVForUnity.UnityUtils;
namespace OpenCVForUnityExample
{
///
/// WrapPerspective Example
/// An example of perspective transformation of a image using the Imgproc.warpPerspective function.
///
public class WrapPerspectiveExample : MonoBehaviour
{
// Use this for initialization
void Start()
{
Texture2D inputTexture = Resources.Load("face") as Texture2D;
Mat inputMat = new Mat(inputTexture.height, inputTexture.width, CvType.CV_8UC4);
Mat outputMat = inputMat.clone();
Utils.texture2DToMat(inputTexture, inputMat);
Debug.Log("inputMat.ToString() " + inputMat.ToString());
Mat src_mat = new Mat(4, 1, CvType.CV_32FC2);
Mat dst_mat = new Mat(4, 1, CvType.CV_32FC2);
src_mat.put(0, 0, 0.0, 0.0, inputMat.cols(), 0.0, 0.0, inputMat.rows(), inputMat.cols(), inputMat.rows());
dst_mat.put(0, 0, 0.0, 0.0, inputMat.cols(), 200.0, 0.0, inputMat.rows(), inputMat.cols(), inputMat.rows() - 200.0);
Mat perspectiveTransform = Imgproc.getPerspectiveTransform(src_mat, dst_mat);
Debug.Log("perspectiveTransform " + perspectiveTransform.dump());
Imgproc.warpPerspective(inputMat, outputMat, perspectiveTransform, new Size(inputMat.cols(), inputMat.rows()));
Texture2D outputTexture = new Texture2D(outputMat.cols(), outputMat.rows(), TextureFormat.RGBA32, false);
Utils.matToTexture2D(outputMat, outputTexture);
gameObject.GetComponent().material.mainTexture = outputTexture;
}
// Update is called once per frame
void Update()
{
}
///
/// Raises the back button click event.
///
public void OnBackButtonClick()
{
SceneManager.LoadScene("OpenCVForUnityExample");
}
}
}