unknown@wiki Scan_vec,大きな画像をピクセルスキャンして16次元のHCEDベクトル生成

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

#include<stdio.h>
#include<stdlib.h>
#define H 200
#define V 301
 

main (){
  
 int i, j, p, q, a, c, jj, ii, b[32][64], vec1[16], **vec_data,total, **mem;
 char s[256];
 FILE *fp;
 //memの確保
 mem=(int **)malloc(sizeof(int *)*H*V);
  if(mem==NULL){
   printf("please put any key to stop program \n");
   exit(1);
   }

    for(i=0;i<V;i++){
         mem[i]=(int *)malloc(sizeof(int)*V);
  if(mem[i]==NULL){
   printf("Plz put any key to stop program \n");
   exit(1);
  }
 }

 total= 168*237;
 
 //vec_dataの確保
 vec_data=(int **)malloc(sizeof(int *)*total);
  if(vec_data==NULL){
   printf("please put any key to stop program \n");
   exit(1);
   }

    for(i=0;i<total;i++){
         vec_data[i]=(int *)malloc(sizeof(int)*16);
  if(vec_data[i]==NULL){
   printf("Plz put any key to stop program \n");
   exit(1);
  }
 }
 

 
 // sumの初期化
 for(j=0;j<16;j++){
  for(i=0;i<total;i++){
   vec_data[i][j]=0;
  }
 }
 //fileの読み込み
    fp=fopen("morikawa.pbm","r");
    if(fp==NULL){
       printf("Can not open file \n");
       exit(1);
    }
 
 for(i=0; i<3; i++){   
 fgets(s, 256, fp);
 }
   

    for(j=0;j<V;j++){
     for(i=0;i<H;i++){
  fscanf(fp,"%d", &mem[i][j]);

  }
 }
 fclose(fp);


    a=0;
 for(j=0;j<237;j++){
  for(i=0;i<168;i++){
   
   for(q=0;q<64;q++){
    for(p=0;p<32;p++){
    b[p][q]=mem[i+p][j+q];
    }
   }

      for(jj=0;jj<4;jj++){
       for(ii=0;ii<4;ii++){
     vec1[ii+jj*4]=0;
        for(p=0;p<16;p++){
         for(q=0;q<8;q++){ 
       vec1[ii+jj*4]=vec1[ii+jj*4]+b[8*ii+q][16*jj+p];
         }
        }
         }
      }
     
     
      for(ii=0;ii<16;ii++){
       vec_data[a][ii]=vec1[ii];
      }
      a++;
     
  }
 }
   


 fp=fopen("sum52.txt","w");
    if(fp==NULL){
       printf("Can not open file \n");
       exit(1);
    }
    for(j=0;j<total;j++){
  for(i=0;i<16;i++){
            fprintf(fp,"%d ",vec_data[j][i]);
  }
  fprintf(fp,"\n");
 }
  
 
 fclose(fp);
 
}