public static void MixChannels(Mat[] src, Mat[] dst, int[] fromTo)
{
if (src == null)
throw new ArgumentNullException(nameof(src));
if (dst == null)
throw new ArgumentNullException(nameof(dst));
if (fromTo == null)
throw new ArgumentNullException(nameof(fromTo));
if (src.Length == 0)
throw new ArgumentException("src.Length == 0");
if (dst.Length == 0)
throw new ArgumentException("dst.Length == 0");
if (fromTo.Length == 0 || fromTo.Length % 2 != 0)
throw new ArgumentException("fromTo.Length == 0");
IntPtr[] srcPtr = new IntPtr[src.Length];
IntPtr[] dstPtr = new IntPtr[dst.Length];
for (int i = 0; i < src.Length; i++)
{
src[i].ThrowIfDisposed();
srcPtr[i] = src[i].CvPtr;
}
for (int i = 0; i < dst.Length; i++)
{
dst[i].ThrowIfDisposed();
dstPtr[i] = dst[i].CvPtr;
}
NativeMethods.core_mixChannels(srcPtr, (uint)src.Length, dstPtr, (uint)dst.Length,
fromTo, (uint)(fromTo.Length / 2));
GC.KeepAlive(src);
GC.KeepAlive(dst);
}
#endregion