public void Reset()
 {
     if (SearchRegion != null && !SearchRegion.IsInitialized())
     {
         SearchRegion.Dispose();
     }
     SearchRegion         = null;
     refImage             = null;
     createShapeModel     = null;
     FindShapeModeRoiList = new List <ROI>();
 }
        //查找模板
        public bool FindShapeModeAct(HImage refImage, CreateShapeModel createShapeModel, HImage image)
        {
            this.createShapeModel = createShapeModel;
            this.refImage         = refImage;

            if (createShapeModel.hShapeModel == null || !createShapeModel.hShapeModel.IsInitialized() || createShapeModel.createNewModelID)
            {
                if (!createShapeModel.CreateShapeModelAct(refImage))
                {
                    return(false);
                }
            }
            try
            {
                HImage searchImage;
                if (SearchRegion != null && SearchRegion.IsInitialized())
                {
                    searchImage = image.ReduceDomain(SearchRegion);
                }
                else
                {
                    searchImage = image.Clone();
                }

                row    = new HTuple();
                column = new HTuple();
                angle  = new HTuple();
                scale  = new HTuple();
                score  = new HTuple();
                createShapeModel.hShapeModel.SetShapeModelParam("border_shape_models", "false");
                createShapeModel.hShapeModel.FindScaledShapeModel(
                    searchImage,
                    createShapeModel.angleStart, createShapeModel.angleExtent,
                    createShapeModel.scaleMin, createShapeModel.scaleMax,
                    minScore, numMatches,
                    maxOverlap,
                    new HTuple(subPixel).TupleConcat("max_deformation 1"),
                    new HTuple(new int[] { createShapeModel.numLevels, numLevels }),
                    greediness,
                    out row, out column, out angle, out scale, out score);

                searchImage.Dispose();
            }
            catch
            {
                return(false);
            }

            return(true);
        }
        public void Close()
        {
            if (resultXLDCont != null && resultXLDCont.IsInitialized())
            {
                resultXLDCont.Dispose();
            }
            resultXLDCont = null;

            refImage         = null;
            createShapeModel = null;
            if (SearchRegion != null && SearchRegion.IsInitialized())
            {
                SearchRegion.Dispose();
            }
            SearchRegion = null;
        }
        public void SerializeCheck()
        {
            if (resultXLDCont != null && resultXLDCont.IsInitialized())
            {
                resultXLDCont.Dispose();
            }

            refImage         = null;
            createShapeModel = null;
            if (SearchRegion != null && !SearchRegion.IsInitialized())
            {
                SearchRegion = null;
            }
            using (Stream objectStream = new MemoryStream())
            {
                System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                formatter.Serialize(objectStream, this);
            }
        }