Пример #1
0
 public virtual void extract(Image image, KeypointArray keypoints, DescriptorBuffer descriptors)
 {
     solar_api_featuresPINVOKE.IDescriptorsExtractor_extract(swigCPtr, Image.getCPtr(image), KeypointArray.getCPtr(keypoints), DescriptorBuffer.getCPtr(descriptors));
     if (solar_api_featuresPINVOKE.SWIGPendingException.Pending)
     {
         throw solar_api_featuresPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Пример #2
0
 public virtual IDescriptorMatcher.RetCode match(DescriptorBuffer descriptors1, DescriptorBufferList descriptors2, DescriptorMatchVector matches)
 {
     IDescriptorMatcher.RetCode ret = (IDescriptorMatcher.RetCode)solar_api_featuresPINVOKE.IDescriptorMatcher_match__SWIG_1(swigCPtr, DescriptorBuffer.getCPtr(descriptors1), DescriptorBufferList.getCPtr(descriptors2), DescriptorMatchVector.getCPtr(matches));
     if (solar_api_featuresPINVOKE.SWIGPendingException.Pending)
     {
         throw solar_api_featuresPINVOKE.SWIGPendingException.Retrieve();
     }
     return(ret);
 }
Пример #3
0
        public virtual FrameworkReturnCode match(IntVector indexDescriptors, DescriptorBuffer descriptors, int indexKeyframe, DescriptorMatchVector matches)
        {
            FrameworkReturnCode ret = (FrameworkReturnCode)solar_api_relocPINVOKE.IKeyframeRetriever_match__SWIG_1(swigCPtr, IntVector.getCPtr(indexDescriptors), DescriptorBuffer.getCPtr(descriptors), indexKeyframe, DescriptorMatchVector.getCPtr(matches));

            if (solar_api_relocPINVOKE.SWIGPendingException.Pending)
            {
                throw solar_api_relocPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Пример #4
0
        public virtual FrameworkReturnCode extract(SquaredBinaryPattern pattern, DescriptorBuffer descriptor)
        {
            FrameworkReturnCode ret = (FrameworkReturnCode)solar_api_featuresPINVOKE.IDescriptorsExtractorSBPattern_extract__SWIG_1(swigCPtr, SquaredBinaryPattern.getCPtr(pattern), DescriptorBuffer.getCPtr(descriptor));

            if (solar_api_featuresPINVOKE.SWIGPendingException.Pending)
            {
                throw solar_api_featuresPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Пример #5
0
        public static DescriptorBufferIterator end(DescriptorBuffer ref_)
        {
            DescriptorBufferIterator ret = new DescriptorBufferIterator(solar_datastructurePINVOKE.end(DescriptorBuffer.getCPtr(ref_)), true);

            if (solar_datastructurePINVOKE.SWIGPendingException.Pending)
            {
                throw solar_datastructurePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Пример #6
0
        public virtual FrameworkReturnCode extract(ImageList images, Contour2DfArray inContours, DescriptorBuffer descriptors, Contour2DfArray outContours)
        {
            FrameworkReturnCode ret = (FrameworkReturnCode)solar_api_featuresPINVOKE.IDescriptorsExtractorSBPattern_extract__SWIG_0(swigCPtr, ImageList.getCPtr(images), Contour2DfArray.getCPtr(inContours), DescriptorBuffer.getCPtr(descriptors), Contour2DfArray.getCPtr(outContours));

            if (solar_api_featuresPINVOKE.SWIGPendingException.Pending)
            {
                throw solar_api_featuresPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Пример #7
0
        public virtual double triangulate(KeypointArray keypointsView1, KeypointArray keypointsView2, DescriptorBuffer descriptor1, DescriptorBuffer descriptor2, DescriptorMatchVector matches, PairUIntUInt working_views, Transform3Df poseView1, Transform3Df poseView2, CloudPointVector pcloud)
        {
            double ret = solar_api_solver_mapPINVOKE.ITriangulator_triangulate__SWIG_2(swigCPtr, KeypointArray.getCPtr(keypointsView1), KeypointArray.getCPtr(keypointsView2), DescriptorBuffer.getCPtr(descriptor1), DescriptorBuffer.getCPtr(descriptor2), DescriptorMatchVector.getCPtr(matches), PairUIntUInt.getCPtr(working_views), Transform3Df.getCPtr(poseView1), Transform3Df.getCPtr(poseView2), CloudPointVector.getCPtr(pcloud));

            if (solar_api_solver_mapPINVOKE.SWIGPendingException.Pending)
            {
                throw solar_api_solver_mapPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Пример #8
0
        public FiducialPipeline(IComponentManager xpcfComponentManager) : base(xpcfComponentManager)
        {
            binaryMarker = Create <IMarker2DSquaredBinary>("SolARMarker2DSquaredBinaryOpencv");

#if !NDEBUG
            imageViewer                 = Create <IImageViewer>("SolARImageViewerOpencv");
            imageViewerGrey             = Create <IImageViewer>("SolARImageViewerOpencv", "grey");
            imageViewerBinary           = Create <IImageViewer>("SolARImageViewerOpencv", "binary");
            imageViewerContours         = Create <IImageViewer>("SolARImageViewerOpencv", "contours");
            imageViewerFilteredContours = Create <IImageViewer>("SolARImageViewerOpencv", "filteredContours");
#endif
            overlay3DComponent = Create <I3DOverlay>("SolAR3DOverlayOpencv");

            imageFilterBinary          = Create <IImageFilter>("SolARImageFilterBinaryOpencv");
            imageConvertor             = Create <IImageConvertor>("SolARImageConvertorOpencv");
            contoursExtractor          = Create <IContoursExtractor>("SolARContoursExtractorOpencv");
            contoursFilter             = Create <IContoursFilter>("SolARContoursFilterBinaryMarkerOpencv");
            perspectiveController      = Create <IPerspectiveController>("SolARPerspectiveControllerOpencv");
            patternDescriptorExtractor = Create <IDescriptorsExtractorSBPattern>("SolARDescriptorsExtractorSBPatternOpencv");

            patternMatcher   = Create <IDescriptorMatcher>("SolARDescriptorMatcherRadiusOpencv");
            patternReIndexer = Create <ISBPatternReIndexer>("SolARSBPatternReIndexer");

            img2worldMapper = Create <IImage2WorldMapper>("SolARImage2WorldMapper4Marker2D");
            PnP             = Create <I3DTransformFinderFrom2D3D>("SolARPoseEstimationPnpOpencv");
#if !NDEBUG
            overlay2DContours = Create <I2DOverlay>("SolAR2DOverlayOpencv", "contours");
            overlay2DCircles  = Create <I2DOverlay>("SolAR2DOverlayOpencv", "circles");
#endif

            greyImage   = SharedPtr.Alloc <Image>().AddTo(subscriptions);
            binaryImage = SharedPtr.Alloc <Image>().AddTo(subscriptions);

            contours                      = new Contour2DfArray().AddTo(subscriptions);
            filtered_contours             = new Contour2DfArray().AddTo(subscriptions);
            patches                       = new ImageList().AddTo(subscriptions);
            recognizedContours            = new Contour2DfArray().AddTo(subscriptions);
            recognizedPatternsDescriptors = new DescriptorBuffer().AddTo(subscriptions);
            markerPatternDescriptor       = new DescriptorBuffer().AddTo(subscriptions);
            patternMatches                = new DescriptorMatchVector().AddTo(subscriptions);
            pattern2DPoints               = new Point2DfArray().AddTo(subscriptions);
            img2DPoints                   = new Point2DfArray().AddTo(subscriptions);
            pattern3DPoints               = new Point3DfArray().AddTo(subscriptions);
            //CamCalibration K;

            // components initialisation
            binaryMarker.loadMarker().Check();
            patternDescriptorExtractor.extract(binaryMarker.getPattern(), markerPatternDescriptor).Check();
            var binaryMarkerSize = binaryMarker.getSize();

            var patternSize = binaryMarker.getPattern().getSize();

            patternDescriptorExtractor.BindTo <IConfigurable>().getProperty("patternSize").setIntegerValue(patternSize);
            patternReIndexer.BindTo <IConfigurable>().getProperty("sbPatternSize").setIntegerValue(patternSize);

            // NOT WORKING ! initialize image mapper with the reference image size and marker size
            var img2worldMapperConf = img2worldMapper.BindTo <IConfigurable>();
            img2worldMapperConf.getProperty("digitalWidth").setIntegerValue(patternSize);
            img2worldMapperConf.getProperty("digitalHeight").setIntegerValue(patternSize);
            img2worldMapperConf.getProperty("worldWidth").setFloatingValue(binaryMarkerSize.width);
            img2worldMapperConf.getProperty("worldHeight").setFloatingValue(binaryMarkerSize.height);
        }