计算时间

    auto start_time = std::chrono::high_resolution_clock::now();
    //do{    
    for (int process_direction = 2; process_direction != 0; --process_direction) {
        count_holefill++;
        for (int y = 1; y < binaryImage.rows - 1; y++) {
            //shift row pointer by one
            p_above = p_curr;
            p_curr = p_below;
            p_below = binaryImage.ptr(y + 1);
            p_result = MaskImage.ptr(y);
            //Init element points
            no = &(p_above[0]);
            ne = &(p_above[1]);
            me = &(p_curr[0]);
            ea = &(p_curr[1]);
            so = &(p_below[0]);
            se = &(p_below[1]);
            for (int x = 1; x < binaryImage.cols - 1; x++) {
                // shift col pointers left by one (scan left to right)
                nw = no;
                no = ne;
                ne = &(p_above[x + 1]);
                we = me;
                me = ea;
                ea = &(p_curr[x + 1]);
                sw = so;
                so = se;
                se = &(p_below[x + 1]);
                //A: 0-1 change number
                //B: adjacent no-zeros numbers
                int A = (*no == 0 && *ne == 1) + (*ne == 0 && *ea == 1) +
                    (*ea == 0 && *se == 1) + (*se == 0 && *so == 1) +
                    (*so == 0 && *sw == 1) + (*sw == 0 && *we == 1) +
                    (*we == 0 && *nw == 1) + (*nw == 0 && *no == 1);
                int B = *no + *ne + *ea + *se + *so + *sw + *we + *nw;
                // remove south or east edge  and nor-west corner point. 
                if (process_direction == 2) {
                    int m1 = *no * *ea * *we;
                    int m2 = *no * *so * *we;
                    if (A == 1 && (B >= 2 && B <= 6) && m1 == 0 && m2 == 0)
                        p_result[x] = 1;
                }
                else if (process_direction == 1) {
                    int m1 = *no * *ea * *so;
                    int m2 = *ea * *so * *we;
                    if (A == 1 && (B >= 2 && B <= 6) && m1 == 0 && m2 == 0)
                        p_result[x] = 1;
                }
                else if ((process_direction != 1) && ((process_direction != 2))) {
                    LOG_F(ERROR, "process_direction is wrong!");
                }
            }
        }
        // thinning image
        binaryImage &= ~MaskImage;
    }

    auto end_start = std::chrono::high_resolution_clock::now();
    int comsurm_time = std::chrono::duration_cast(end_start - start_time).count();

#include “stdio.h”    
#include “stdlib.h”    
#include “time.h”    
int main( void )    
{    
   long    i = 10000000L;    
   clock_t start, finish;    
   double  duration;    
   /* 测量一个事件持续的时间*/    
   printf( "Time to do %ld empty loops is ", i );    
   start = clock();    
   while( i-- )      ;    
   finish = clock();    
   duration = (double)(finish - start) / CLOCKS_PER_SEC;    
   printf( "%f seconds\n", duration );    
   system("pause");    
}    

 

你可能感兴趣的:(工具)