public override IDisposable Load() { detector = new MarkerDetector(); if (!string.IsNullOrEmpty(CameraParameters)) { parameters = new CameraParameters(); parameters.ReadFromXmlFile(CameraParameters); cameraMatrix = new CvMat(3, 3, CvMatDepth.CV_32F, 1); distortion = new CvMat(1, 4, CvMatDepth.CV_32F, 1); parameters.CopyParameters(cameraMatrix.DangerousGetHandle(), distortion.DangerousGetHandle()); } return(base.Load()); }
public override MarkerFrame Process(IplImage input) { var hInput = input.DangerousGetHandle(); var hCamMatrix = cameraMatrix != null?cameraMatrix.DangerousGetHandle() : IntPtr.Zero; var hDistortion = distortion != null?distortion.DangerousGetHandle() : IntPtr.Zero; detector.ThresholdType = ThresholdType; detector.Param1 = Param1; detector.Param2 = Param2; detector.CornerRefinement = CornerRefinement; var detectedMarkers = detector.Detect(hInput, hCamMatrix, hDistortion, MarkerSize); return(new MarkerFrame(parameters, detectedMarkers)); }