Advertisement
hasegawa

color-image

Feb 28th, 2014
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.18 KB | None | 0 0
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     //Decralation of variables
  8.     FILE *fpi1,*fpi2,*fpi3,*fpo;
  9.     int id,ix,iy,i,width,height,time,o,p,q,sec;
  10.     float x,y,z;
  11.     unsigned char dn;
  12.     unsigned char *buffer;
  13.     unsigned char color[18][3];
  14.     int *imeco1;
  15.     float *imeco2;
  16.     int imeco_ix,imeco_iy;
  17.  
  18.     unsigned char r,g,b;
  19.     char line[4];
  20.     long k=0;
  21.     long num;
  22.     int gps_no;
  23.     int xy_num;
  24.     int np1=2; //numbers of parameters
  25.     int np2=3;
  26.    
  27.    
  28.     //point data
  29.      if((fpi1=fopen(argv[1],"r"))==NULL)
  30.     {
  31.         printf ("The file can't be opened. The program is exit.\n");
  32.         return 0;
  33.     }
  34.     //image data
  35.     if((fpi2=fopen(argv[2],"rb"))==NULL)
  36.     {
  37.         printf ("The file can't be opened. The program is exit.\n");
  38.         return 0;
  39.     }
  40.  
  41.     if((fpo=fopen(argv[3],"w"))==NULL)
  42.     {
  43.         printf ("The file can't be opened. The program is exit.\n");
  44.         return 0;
  45.     }
  46.    
  47.    
  48.     width = atoi(argv[4]); printf("W = %d,", width);        //2000
  49.     height = atoi(argv[5]); printf("H = %d\n", height);     //1500
  50.    
  51.     /*
  52.      r=atoi(argv[6]);
  53.      g=atoi(argv[7]);
  54.      b=atoi(argv[8]);
  55.      */
  56.    
  57.    
  58.     //2 : x y
  59.     //imeco=(int*)malloc(xy_num*num); //for
  60.     //fread((int*)imeco,sizeof(int),xy_num*num,fpi1);
  61.    
  62.    
  63.     //for image data
  64.     buffer= (unsigned char*)malloc(width*height*3);
  65.     fread((unsigned char*)buffer,sizeof(char),width*height*3,fpi2);
  66.    
  67.    
  68.    
  69.     //x y position on that time
  70.     //printf("ix=%d\n",ix);
  71.     //printf("iy=%d\n",iy);
  72.    
  73.  
  74.     k=0;
  75.  
  76.     while(fscanf(fpi1,"%d %d %f %f %f",&ix,&iy,&x,&y,&z)!=EOF)
  77.     {
  78.        
  79.         k=k+1;
  80.    
  81.     }  
  82.     printf("k=%d\n",k);
  83.  
  84.     num=k; //real total_column
  85.    
  86.     imeco1=(int *)malloc(8*num);
  87. //  imeco2=(float *)malloc(12*num);
  88.  
  89.     printf("imeco1=%d\n",2*num);
  90.     printf("imeco2=%d\n",3*num);
  91.  
  92.     fseek(fpi1,0,SEEK_SET);
  93.  
  94.     k=0;
  95.  
  96.     while(fscanf(fpi1,"%d %d %f %f %f",&ix,&iy,&x,&y,&z)!=EOF)
  97.     {
  98.        
  99.         imeco1[k*np1] =ix;
  100.         imeco1[k*np1+1]=iy;
  101.         //printf("id1=%d,id2=%d\n",k*np1,k*np1+1);
  102.       //  imeco2[k*np2]=x;
  103.       //  imeco2[k*np2+1]=y;
  104.         //imeco2[k*np2+2]=z;
  105.         //printf("id2-1=%d,id2-2=%d,id2-3=%d\n",k*np2,k*np2+1,k*np2+2);    
  106.        // printf("%d %d %f %f %f\n",ix,iy,x,y,z);
  107.         printf("k=%d\n",k);
  108.         k=k+1;
  109.        
  110.     }
  111.        // printf("check3\n");
  112.  
  113.     for(i=0;i<k;i++)
  114.     {
  115.  
  116.         imeco_ix=imeco1[i*2];
  117.         imeco_iy=imeco1[i*2+1];
  118.         r=buffer[3*(imeco_iy*width+imeco_ix)];
  119.         g=buffer[3*(imeco_iy*width+imeco_ix)+1];
  120.         b=buffer[3*(imeco_iy*width+imeco_ix)+2];
  121.         fprintf(fpo,"%f %f %f %d %d %d\n",imeco2[i*3],imeco2[i*3+1],imeco2[i*3+2],r,g,b);  
  122.  
  123.     }
  124.    
  125.    
  126.    
  127.     //colored point on that position
  128.  
  129.    /*
  130.     for(i=0;i<np*num;i++) //xy_num=gps_no*np; num:total_time//gps_no*total_time
  131.     {
  132.         int imeco_time;
  133.      
  134.         printf("time=%d\n",time);
  135.         imeco_time=imeco[i*4+1];
  136.         printf("imeco[i*4+1]=%d\n",imeco_time);
  137.        
  138.         if(imeco[i*4+1]==time)
  139.         {
  140.            
  141.             int id_no;
  142.             int imeco_ix,imeco_iy;
  143.             id_no=imeco[i*4];
  144.              
  145.            
  146.             imeco_ix=imeco[i*4+2];
  147.             imeco_iy=imeco[i*4+3];
  148.  
  149.             buffer[3*(imeco_iy*width+imeco_ix)]=color[id_no][0];
  150.             buffer[3*(imeco_iy*width+imeco_ix)+1]=color[id_no][1];
  151.             buffer[3*(imeco_iy*width+imeco_ix)+2]=color[id_no][2];
  152.        // buffer[3*(iy*width+ix)+1]=color[k][1];
  153.        // buffer[3*(iy*width+ix)+2]=color[k][2];
  154.             printf("imeco_ix=%d\n",imeco_ix);
  155.             printf("imeco_iy=%d\n",imeco_iy);
  156.             printf("imeco_ix=%d\n",color[id_no][0]);
  157.             printf("imeco_iy=%d\n",color[id_no][1]);
  158.            
  159.         }
  160.     }
  161.      */
  162.    
  163.     //record colored point to file (write) on the background picture
  164.        
  165.     /*for(i=0;i<height*3;i++)
  166.     {
  167.         for(j=0;j<width;j++)
  168.         {
  169.             dn=buffer[i*width+j];
  170.             fwrite(&dn,sizeof(char),1,fpo);
  171.         }*/
  172.  
  173.            
  174.    
  175.     free(buffer);
  176.     free(imeco1);
  177.     free(imeco2);
  178.    
  179.    
  180.    
  181.     fclose(fpi1);
  182.     fclose(fpi2);
  183.     fclose(fpo);
  184.    
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement