private static IImage cvLoader(string fileName) { var cvImg = CvHighGuiInvoke.cvLoadImage(fileName, ImageLoadType.Unchanged); var image = IplImage.FromPointer(cvImg).AsImage((_) => { if (cvImg == IntPtr.Zero) { return; } CvHighGuiInvoke.cvReleaseImage(ref cvImg); }); return(image); }
/// <summary> /// Reads the next image in the stream and advances the position by one. /// </summary> /// <param name="image">Read image.</param> /// <returns>True if the reading operation was successful, false otherwise.</returns> protected override bool ReadInternal(out IImage image) { bool status = false; image = default(IImage); lock (syncObj) { IntPtr cvFramePtr; cvFramePtr = CvHighGuiInvoke.cvQueryFrame(capturePtr); if (cvFramePtr != IntPtr.Zero) { image = IplImage.FromPointer(cvFramePtr).AsImage(); this.Position++; status = true; } } return(status); }