/// <summary> /// /// </summary> /// <param name="mats"></param> public VectorOfMat(IEnumerable <Mat> mats) { if (mats == null) { throw new ArgumentNullException("nameof(mats)"); } var matPointers = EnumerableEx.SelectPtrs(mats); ptr = NativeMethods.vector_Mat_new3(matPointers, new IntPtr(matPointers.Length)); }
/// <summary> /// /// </summary> /// <param name="mats"></param> public VectorOfMat(IEnumerable <Mat> mats) { if (mats == null) { throw new ArgumentNullException(nameof(mats)); } var matPointers = EnumerableEx.SelectPtrs(mats); using (var matPointersPointer = new ArrayAddress1 <IntPtr>(matPointers)) { ptr = NativeMethods.vector_Mat_new3( matPointersPointer.Pointer, new IntPtr(matPointers.Length)); } }
/// <summary> /// /// </summary> /// <param name="mats"></param> public VectorOfMat(IEnumerable <Mat> mats) { if (mats == null) { throw new ArgumentNullException(nameof(mats)); } var matPointers = EnumerableEx.SelectPtrs(mats); using (var matPointersPointer = new ArrayAddress1 <IntPtr>(matPointers)) { ptr = NativeMethods.vector_Mat_new3( matPointersPointer.Pointer, new IntPtr(matPointers.Length)); } GC.KeepAlive(mats); // todo: rsb - should probably generate Mat[] and then get CvPtrs }
/// <summary> /// /// </summary> /// <param name="mats"></param> public VectorOfMat(IEnumerable <Mat> mats) { if (mats == null) { throw new ArgumentNullException(nameof(mats)); } var matsArray = EnumerableEx.ToArray(mats); var matPointers = EnumerableEx.SelectPtrs(matsArray); ptr = NativeMethods.vector_Mat_new3( matPointers, (uint)matPointers.Length); GC.KeepAlive(matPointers); GC.KeepAlive(mats); // todo: rsb - should probably generate Mat[] and then get CvPtrs foreach (var m in matsArray) { GC.KeepAlive(m); } }