/// <summary> /// Extracts a diagonal from a matrix /// </summary> /// <param name="d">d index of the diagonal, with the following values: /// - d=0 is the main diagonal. /// - d<0 is a diagonal from the lower half. For example, d=-1 means the diagonal is set immediately below the main one. /// - d>0 is a diagonal from the upper half. For example, d=1 means the diagonal is set immediately above the main one.</param> /// <returns></returns> public MatExpr Diag(MatDiagType d = MatDiagType.Main) { ThrowIfDisposed(); NativeMethods.HandleException( NativeMethods.core_MatExpr_diag(ptr, (int)d, out var ret)); GC.KeepAlive(this); var retVal = new MatExpr(ret); return(retVal); }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <returns></returns> public Mat Diag(MatDiagType d) { ThrowIfDisposed(); try { IntPtr retPtr = CppInvoke.core_Mat_diag(ptr, (int)d); Mat retVal = new Mat(retPtr); return retVal; } catch (BadImageFormatException ex) { throw PInvokeHelper.CreateException(ex); } }