123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using UnityEngine;
- using UnityEngine.SceneManagement;
- using System.Collections;
- using OpenCVForUnity.CoreModule;
- using OpenCVForUnity.Calib3dModule;
- using OpenCVForUnity.UnityUtils;
- using OpenCVForUnity.ImgcodecsModule;
- namespace OpenCVForUnityExample
- {
- /// <summary>
- /// StereoBM Example
- /// An example of stereo correspondence using the block matching algorithm.
- /// Referring to http://docs.opencv.org/trunk/tutorial_py_depthmap.html#gsc.tab=0.
- /// </summary>
- public class StereoBMExample : MonoBehaviour
- {
- // Use this for initialization
- void Start ()
- {
- //Read the left and right images
- Texture2D texLeft = Resources.Load ("tsukuba_l") as Texture2D;
- Texture2D texRight = Resources.Load ("tsukuba_r") as Texture2D;
- Mat imgLeft = new Mat (texLeft.height, texLeft.width, CvType.CV_8UC1);
- Mat imgRight = new Mat (texRight.height, texRight.width, CvType.CV_8UC1);
- Utils.texture2DToMat (texLeft, imgLeft);
- Utils.texture2DToMat (texRight, imgRight);
- //or
- //Mat imgLeft = Imgcodecs.imread (Utils.getFilePath ("tsukuba_l.png"), Imgcodecs.IMREAD_GRAYSCALE);
- //Mat imgRight = Imgcodecs.imread (Utils.getFilePath ("tsukuba_r.png"), Imgcodecs.IMREAD_GRAYSCALE);
-
-
- Mat imgDisparity16S = new Mat (imgLeft.rows (), imgLeft.cols (), CvType.CV_16S);
- Mat imgDisparity8U = new Mat (imgLeft.rows (), imgLeft.cols (), CvType.CV_8UC1);
-
- // if (imgLeft.empty () || imgRight.empty ()) {
- // Debug.Log ("Error reading images ");
- // }
-
- StereoBM sbm = StereoBM.create (16, 15);
-
- sbm.compute (imgLeft, imgRight, imgDisparity16S);
-
- //normalize to CvType.CV_8U
- Core.normalize (imgDisparity16S, imgDisparity8U, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);
-
-
- Texture2D texture = new Texture2D (imgDisparity8U.cols (), imgDisparity8U.rows (), TextureFormat.RGBA32, false);
-
- Utils.matToTexture2D (imgDisparity8U, texture);
-
- gameObject.GetComponent<Renderer> ().material.mainTexture = texture;
- }
-
- // Update is called once per frame
- void Update ()
- {
- }
- /// <summary>
- /// Raises the back button click event.
- /// </summary>
- public void OnBackButtonClick ()
- {
- SceneManager.LoadScene ("OpenCVForUnityExample");
- }
- }
- }
|