コード例 #1
0
 private void generate_fake_button_click(object sender, RoutedEventArgs e)
 {
     //tab_item_matching.IsEnabled = true;
     scene = r_ui._scene;
     for (int i = 0; i < scene.images.Count; i++)
     {
         for (int j = 0; j < scene.images[i].Count; j++)
         {
             //scene.images[i][j].generate_points();
             scene.images[i][j].generate_false_points();
         }
     }
     //scene.generate_matches(System.Convert.ToInt32(matches_count_tb.Text));
     scene.generate_false_matches(System.Convert.ToInt32(matches_count_tb3.Text));
     scene.create_connections();
 }
コード例 #2
0
        void click_once_solution_thread_start()
        {
            scene.clear_connections();
            System.Collections.Generic.List <int> cat_ind = new List <int>();
            System.Collections.Generic.List <int> im_ind  = new List <int>();
            int img_count = 0;

            for (int i = 0; i < scene.images.Count; i++)
            {
                for (int j = 0; j < scene.images[i].Count; j++)
                {
                    cat_ind.Add(i);
                    im_ind.Add(j);
                    img_count++;
                }
            }
            System.Threading.Tasks.Parallel.For(0, img_count, (i, loopstate) =>
            {
                scene.images[cat_ind[i]][im_ind[i]].build_integral_image();
                scene.images[cat_ind[i]][im_ind[i]].detect_points();

                prog_window.progress();
                if (cancelation_token)
                {
                    loopstate.Stop();
                }
            });
            if (cancelation_token)
            {
                cancel_work();
                return;
            }

            System.Threading.Tasks.Parallel.For(0, img_count, (i, loopstate) =>
            {
                scene.images[cat_ind[i]][im_ind[i]].describe_points();
                scene.images[cat_ind[i]][im_ind[i]].get_render_data();
                prog_window.progress();
                //scene.images[i][j].generate_false_points();
                if (cancelation_token)
                {
                    loopstate.Stop();
                }
            });
            if (cancelation_token)
            {
                cancel_work();
                return;
            }
            scene.progress_callback prog_calb = prog_window.progress;
            scene.generate_matches(prog_calb);
            scene.create_connections();

            Dispatcher.Invoke(new Action(() =>
            {
                r_ui.lock_ui(false);
                scene = r_ui._scene;
                m_ui.update_scene(scene);
                connections_datagrid.Items.Refresh();
                prog_window.Close();
                cancelation_token = false;
                calc_thread.Abort();
                return;
            }), System.Windows.Threading.DispatcherPriority.Render);
            //prog_window.progress();
        }