/// <summary> /// Raises the pause button click event. /// </summary> public void OnPauseButtonClick() { sourceToMatHelper.Pause(); }
// Update is called once per frame void Update() { if (!sourceToMatHelper.IsInitialized()) { return; } #if ((UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR) //Touch int touchCount = Input.touchCount; if (touchCount == 1) { Touch t = Input.GetTouch(0); if (t.phase == TouchPhase.Ended && !EventSystem.current.IsPointerOverGameObject(t.fingerId)) { storedTouchPoint = new Point(t.position.x, t.position.y); //Debug.Log ("touch X " + t.position.x); //Debug.Log ("touch Y " + t.position.y); } } #else //Mouse if (Input.GetMouseButtonUp(0) && !EventSystem.current.IsPointerOverGameObject()) { storedTouchPoint = new Point(Input.mousePosition.x, Input.mousePosition.y); //Debug.Log ("mouse X " + Input.mousePosition.x); //Debug.Log ("mouse Y " + Input.mousePosition.y); } #endif if (selectedPointList.Count != 1) { if (!sourceToMatHelper.IsPlaying()) { sourceToMatHelper.Play(); } if (sourceToMatHelper.IsPlaying() && sourceToMatHelper.DidUpdateThisFrame()) { Mat rgbMat = sourceToMatHelper.GetMat(); if (storedTouchPoint != null) { ConvertScreenPointToTexturePoint(storedTouchPoint, storedTouchPoint, gameObject, texture.width, texture.height); OnTouch(storedTouchPoint, texture.width, texture.height); storedTouchPoint = null; } if (selectedPointList.Count == 1) { foreach (var point in selectedPointList) { Imgproc.circle(rgbMat, point, 6, new Scalar(0, 0, 255), 2); } } else if (selectedPointList.Count == 2) { using (MatOfPoint selectedPointMat = new MatOfPoint(selectedPointList.ToArray())) { // add tracker. OpenCVForUnity.CoreModule.Rect region = Imgproc.boundingRect(selectedPointMat); trackers.add(TrackerKCF.create(), rgbMat, new Rect2d(region.x, region.y, region.width, region.height)); } selectedPointList.Clear(); trackingColorList.Add(new Scalar(UnityEngine.Random.Range(0, 255), UnityEngine.Random.Range(0, 255), UnityEngine.Random.Range(0, 255))); } trackers.update(rgbMat, objects); // draw tracked objects regions. Rect2d[] objectsArray = objects.toArray(); for (int i = 0; i < objectsArray.Length; i++) { Imgproc.rectangle(rgbMat, objectsArray[i].tl(), objectsArray[i].br(), trackingColorList[i], 2, 1, 0); } if (selectedPointList.Count != 1) { //Imgproc.putText (rgbMat, "Please touch the screen, and select tracking regions.", new Point (5, rgbMat.rows () - 10), Core.FONT_HERSHEY_SIMPLEX, 0.8, new Scalar (255, 255, 255, 255), 2, Imgproc.LINE_AA, false); if (fpsMonitor != null) { fpsMonitor.consoleText = "Please touch the screen, and select tracking regions."; } } else { //Imgproc.putText (rgbMat, "Please select the end point of the new tracking region.", new Point (5, rgbMat.rows () - 10), Core.FONT_HERSHEY_SIMPLEX, 0.8, new Scalar (255, 255, 255, 255), 2, Imgproc.LINE_AA, false); if (fpsMonitor != null) { fpsMonitor.consoleText = "Please select the end point of the new tracking region."; } } Utils.fastMatToTexture2D(rgbMat, texture); } } else { if (sourceToMatHelper.IsPlaying()) { sourceToMatHelper.Pause(); } if (storedTouchPoint != null) { ConvertScreenPointToTexturePoint(storedTouchPoint, storedTouchPoint, gameObject, texture.width, texture.height); OnTouch(storedTouchPoint, texture.width, texture.height); storedTouchPoint = null; } } }