public CVHistogram CalcHistogram(int[] binSizes, CVPair[] binRanges, CVImage mask) { CVHistogram h = new CVHistogram(binSizes, binRanges); __IplImagePtr[] images = new __IplImagePtr[this.Channels]; if (this.Channels == 1) { images[0] = this.Internal; } else { CVImage[] planes = this.Split(); for (int i = 0; i < planes.Length; ++i) { images[i] = planes[i].Internal; } } __CvArrPtr maskArr = IntPtr.Zero; if (mask != null) { maskArr = mask.Array; } PInvoke.cvCalcHist(images, h.Internal, 0, maskArr); CVUtils.CheckLastError(); return(h); }