public void Reset() { // Used on metadata over load. planeIsConvex = true; initialized = false; quadImage = quadPlane.Clone(); }
/// <summary> /// Updates the calibration coordinate system without changing the real-world scale of the rectangle or the user-defined origin. /// Quadrilateral variant. /// </summary> public void Update(QuadrilateralF quadImage) { if (!initialized || size.IsEmpty) { valid = false; return; } this.quadImage = quadImage.Clone(); mapping.Update(new QuadrilateralF(size.Width, size.Height), quadImage); valid = quadImage.IsConvex; }
/// <summary> /// Initialize the projective mapping. /// </summary> /// <param name="size">Real world dimension of the reference rectangle.</param> /// <param name="quadImage">Image coordinates of the reference rectangle.</param> public void Initialize(SizeF size, QuadrilateralF quadImage) { PointF originImage = initialized ? Untransform(PointF.Empty) : quadImage.D; this.size = size; this.quadImage = quadImage.Clone(); mapping.Update(new QuadrilateralF(size.Width, size.Height), quadImage); SetOrigin(originImage); this.initialized = true; valid = quadImage.IsConvex; }
/// <summary> /// Initialize the projective mapping from a quadrilateral. /// size: Real world dimension of the reference rectangle. /// quadImage: Image coordinates of the reference rectangle. /// </summary> public void Initialize(SizeF sizeWorld, QuadrilateralF quadImage) { //PointF originImage = initialized ? Untransform(PointF.Empty) : quadImage.D; PointF originImage = quadImage.D; this.size = sizeWorld; this.quadImage = quadImage.Clone(); mapping.Update(new QuadrilateralF(size.Width, size.Height), quadImage); origin = mapping.Backward(originImage); this.initialized = true; valid = quadImage.IsConvex; perspective = !quadImage.IsAxisAlignedRectangle; }
public void Update(QuadrilateralF quadImage) { this.quadImage = quadImage.Clone(); mapping.Update(new QuadrilateralF(size.Width, size.Height), quadImage); valid = quadImage.IsConvex; }