예제 #1
0
        public static Points_3D Union_object_model_3d(HTuple model)
        {
            HTuple unionedModel;

            HOperatorSet.UnionObjectModel3d(model, "points_surface", out unionedModel);
            Points_3D points_3D = new Points_3D(unionedModel);

            HOperatorSet.ClearObjectModel3d(unionedModel);
            return(points_3D);
        }
예제 #2
0
        public void a()
        {
            BoundingBox_3D a   = new BoundingBox_3D(1);
            var            gbg = (HTuple)a;

            Points_3D     points1       = new Points_3D(1);
            Points_3D     points2       = new Points_3D(1);
            ListPoints_3D listPoints_3D = new ListPoints_3D();

            listPoints_3D.Register_object_model_3d_pair(points1, points2);
        }
예제 #3
0
        /**写代码注意事项:
         * 0. 生成的临时的模型Htuple 需要及时释放
         * **/


        /**采样
        * **/
        private static Points_3D Sample_object_model_3d(HTuple model, SampleMethord methord = SampleMethord.accurate, double sampleDistance = 1, SampleParams para = SampleParams.min_num_points, int minNumPoints = 1)
        {
            HTuple m = BaseMethord.Enum2Htuple(methord);
            HTuple p = BaseMethord.Enum2Htuple(para);
            HTuple sampledModel;

            HOperatorSet.SampleObjectModel3d(model, m, sampleDistance, p, minNumPoints, out sampledModel);
            Points_3D points_3D = new Points_3D(sampledModel);

            HOperatorSet.ClearObjectModel3d(sampledModel);
            return(points_3D);
        }
예제 #4
0
        /**全局注册
         * 返回一个融合好的模型
         * **/
        public Points_3D Register_object_model_3d_global()
        {
            HTuple HomMat3DRefined, Score;
            HTuple modelHandle = GetModels();
            HTuple poseHandle  = Pose2Mat();

            HOperatorSet.RegisterObjectModel3dGlobal(modelHandle, poseHandle, "previous",
                                                     new HTuple(), Enum2Htuple(GenParamName.max_num_iterations), 1, out HomMat3DRefined, out Score);
            HTuple    affinedModel  = HalconWrapper.Affine_trans_object_model_3d(modelHandle, HomMat3DRefined);
            Points_3D unionedPoints = HalconWrapper.Union_object_model_3d(affinedModel);

            HOperatorSet.ClearObjectModel3d(affinedModel);
            return(unionedPoints);
        }
예제 #5
0
        /**对输入的点云进行注册
         *  PreviousOM3 : 基准点云
         *  ObjectModel3D : 需要配准的点云
         * **/
        public void Register_object_model_3d_pair(Points_3D ObjectModel3D, Points_3D PreviousOM3)
        {
            HTuple methord = Enum2Htuple(Methord.matching);
            HTuple genParamName = Enum2Htuple(GenParamName.default_parameters);
            HTuple genParamValue = Enum2Htuple(GenParamValue.accurate);
            HTuple pose, score;

            HOperatorSet.RegisterObjectModel3dPair
                (ObjectModel3D.Pointclouds, PreviousOM3.Pointclouds, methord, genParamName, genParamValue, out pose, out score);
            PairRegesterResult regesterResult = new PairRegesterResult();

            regesterResult.pose  = pose;
            regesterResult.score = score;

            //保存点云和变换矩阵
            pairRegesters.Add(regesterResult);
            if (registePointsList.Count == 0)
            {
                registePointsList.Add(PreviousOM3);
            }
            registePointsList.Add(ObjectModel3D);
        }
예제 #6
0
 public static Points_3D Sample_object_model_3d(Points_3D model, SampleMethord methord = SampleMethord.accurate, double sampleDistance = 1, SampleParams para = SampleParams.min_num_points, int minNumPoints = 1)
 {
     return(Sample_object_model_3d
                (model.Pointclouds, methord, sampleDistance, para, minNumPoints));
 }
예제 #7
0
        /**拷贝当前点云
         * 注意,这里只拷贝了当前点云,没有拷贝里面存储的配准点云
         * **/
        public Points_3D Copy()
        {
            Points_3D p = new Points_3D(this.Pointclouds);

            return(p);
        }