private void DisposeCalibraton() { ResetCalibration(); if (bgrMat != null) { bgrMat.Dispose(); } if (rgbaMat != null) { rgbaMat.Dispose(); } if (ids != null) { ids.Dispose(); } foreach (var item in corners) { item.Dispose(); } corners.Clear(); foreach (var item in rejectedCorners) { item.Dispose(); } rejectedCorners.Clear(); foreach (var item in rvecs) { item.Dispose(); } rvecs.Clear(); foreach (var item in tvecs) { item.Dispose(); } tvecs.Clear(); if (recoveredIdxs != null) { recoveredIdxs.Dispose(); } if (charucoCorners != null) { charucoCorners.Dispose(); } if (charucoIds != null) { charucoIds.Dispose(); } if (charucoBoard != null) { charucoBoard.Dispose(); } isInitialized = false; }
/// <summary> /// Raises the webcam texture to mat helper disposed event. /// </summary> public void OnWebCamTextureToMatHelperDisposed() { Debug.Log("OnWebCamTextureToMatHelperDisposed"); if (rgbMat != null) { rgbMat.Dispose(); } if (texture != null) { Texture2D.Destroy(texture); texture = null; } if (ids != null) { ids.Dispose(); } foreach (var item in corners) { item.Dispose(); } corners.Clear(); foreach (var item in rejectedCorners) { item.Dispose(); } rejectedCorners.Clear(); if (rvecs != null) { rvecs.Dispose(); } if (tvecs != null) { tvecs.Dispose(); } if (rotMat != null) { rotMat.Dispose(); } if (rvec != null) { rvec.Dispose(); } if (tvec != null) { tvec.Dispose(); } if (recoveredIdxs != null) { recoveredIdxs.Dispose(); } if (gridBoard != null) { gridBoard.Dispose(); } if (charucoCorners != null) { charucoCorners.Dispose(); } if (charucoIds != null) { charucoIds.Dispose(); } if (charucoBoard != null) { charucoBoard.Dispose(); } foreach (var item in diamondCorners) { item.Dispose(); } diamondCorners.Clear(); if (diamondIds != null) { diamondIds.Dispose(); } }
private void CreateMaeker() { if (markerImg.cols() != markerSize) { markerImg.Dispose(); markerImg = new Mat(markerSize, markerSize, CvType.CV_8UC3); texture = new Texture2D(markerImg.cols(), markerImg.rows(), TextureFormat.RGB24, false); } else { markerImg.setTo(Scalar.all(255)); } gameObject.transform.localScale = new Vector3(markerImg.cols(), markerImg.rows(), 1); float width = markerImg.width() / 0.7f; float height = markerImg.height() / 0.7f; float widthScale = (float)Screen.width / width; float heightScale = (float)Screen.height / height; if (widthScale < heightScale) { Camera.main.orthographicSize = (width * (float)Screen.height / (float)Screen.width) / 2; gameObject.transform.localPosition = new Vector3(0, -height * 0.1f, 0); } else { Camera.main.orthographicSize = height / 2; gameObject.transform.localPosition = new Vector3(width * 0.1f, 0, 0); } // create dictinary. Dictionary dictionary = Aruco.getPredefinedDictionary((int)dictionaryId); // draw marker. switch (markerType) { default: case MarkerType.CanonicalMarker: Aruco.drawMarker(dictionary, (int)markerId, markerSize, markerImg, borderBits); Debug.Log("draw CanonicalMarker: " + "dictionaryId " + (int)dictionaryId + " markerId " + (int)markerId + " sidePixels " + markerSize + " borderBits " + borderBits); break; case MarkerType.GridBoard: GridBoard gridBoard = GridBoard.create(gridBoradMarkersX, gridBoradMarkersY, gridBoradMarkerLength, gridBoradMarkerSeparation, dictionary, gridBoradMarkerFirstMarker); gridBoard.draw(new Size(markerSize, markerSize), markerImg, gridBoradMarginSize, borderBits); gridBoard.Dispose(); Debug.Log("draw GridBoard: " + "markersX " + gridBoradMarkersX + " markersY " + gridBoradMarkersY + " markerLength " + gridBoradMarkerLength + " markerSeparation " + gridBoradMarkerSeparation + "dictionaryId " + (int)dictionaryId + " outSize " + markerSize + " marginSize " + gridBoradMarginSize + " borderBits " + borderBits); break; case MarkerType.ChArUcoBoard: CharucoBoard charucoBoard = CharucoBoard.create(chArUcoBoradMarkersX, chArUcoBoradMarkersY, chArUcoBoradSquareLength, chArUcoBoradMarkerLength, dictionary); charucoBoard.draw(new Size(markerSize, markerSize), markerImg, chArUcoBoradMarginSize, borderBits); charucoBoard.Dispose(); Debug.Log("draw ChArUcoBoard: " + "markersX " + chArUcoBoradMarkersX + " markersY " + chArUcoBoradMarkersY + " markerLength " + chArUcoBoradSquareLength + " markerSeparation " + chArUcoBoradMarkerLength + "dictionaryId " + (int)dictionaryId + " outSize " + markerSize + " marginSize " + chArUcoBoradMarginSize + " borderBits " + borderBits); break; } Utils.matToTexture2D(markerImg, texture); }