Guest User

Untitled

a guest
May 26th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. else if(operation=="region")
  2. {
  3. int suma=0;
  4. CImg<unsigned char> image(argv[1]);
  5. CImg<unsigned char> visu(image.width(),image.height(),1,3,0);
  6. int tablica[image.width()][image.height()];
  7. for(int i=0;i<image.width();i++)
  8. {
  9. for(int j=0;j<image.height();j++)
  10. tablica[i][j]=0;
  11. }
  12. int n=image.height()*image.width();
  13. int tmp=0;
  14. int t[255],t2[255],t3[255];
  15.  
  16.  
  17. int choice;
  18. cout<<"Enter '1' if you want to enter values of region of your choice. Enter 2 if you want to divide picture into few regions."<<endl;
  19. cin>>choice;
  20. switch(choice)
  21. {
  22. case 1:
  23. int xd,yd;
  24. cout<<endl<<"Enter x value of your seed";
  25. cin>>xd;
  26. cout<<"Enter y value of your seed ";
  27. cin>>yd;
  28. int sred=image(xd,yd,0);
  29.  
  30. float kolor;
  31. do
  32. {
  33. cout<<endl<<"In what color I should create region?"<<endl;
  34. cin>>kolor;
  35. }while(kolor>255&&kolor<0);
  36.  
  37. WHOLE_IMAGE_WITHOUT_BORDERS
  38. {
  39. if(image(x,y,z)<(sred+20) && image(x,y,z)>(sred-20))
  40. {tablica[x][y]=1;}
  41. }
  42. tablica[xd][yd]=2;
  43.  
  44.  
  45. for(int m;m<image.height();m++)
  46. {
  47.  
  48. for(int z=0;z<image.width();z++)
  49. {
  50.  
  51. for(int k=0;k<image.height();k++)
  52. {
  53. for(int i=-1;i<2;i++)for(int j=-1;j<2;j++)
  54. {
  55. if(tablica[k][z]==1){if(tablica[k+i][z+j]==2){tablica[k][z]=2;}}
  56. }
  57. }
  58. }
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65. for(int x=0;x<image.width();x++)
  66. {
  67.  
  68. for(int y=0;y<image.height();y++)
  69. { for(int z=0;z<spectrum;z++){
  70. if(tablica[x][y]==2) {image(x,y,z)=kolor; visu(x,y,z)=60;}
  71. }}}
  72.  
  73.  
  74. break;
  75. case 2:
  76.  
  77. for(int k=0;k<4;k++)
  78. {
  79.  
  80.  
  81. for(int i=0;i<255;i++)
  82. {
  83. t[i]=0;
  84. t2[i]=0;
  85. t3[i]=0;
  86. }
  87.  
  88. for(int x=0;x<image.width();x++)for(int y=0;y<image.height();y++)
  89. { if(tablica[x][y]==0){
  90. tmp=image(x,y,0);
  91. t[tmp]++;}
  92. }
  93. tmp=0;
  94. for(int x=0;x<image.width();x++)for(int y=0;y<image.height();y++)
  95. {if(tablica[x][y]==0){
  96. tmp=image(x,y,1);
  97. t2[tmp]++;}
  98. }
  99. tmp=0;
  100. for(int x=0;x<image.width();x++)for(int y=0;y<image.height();y++)
  101. {if(tablica[x][y]==0){
  102. tmp=image(x,y,2);
  103. t3[tmp]++;}
  104. }
  105.  
  106. double br, bg, bb;
  107. for(int i=0; i<255; i++)
  108. {
  109. suma = suma + (i*t[i]);
  110. }
  111. br=suma/n;
  112.  
  113. suma=0;
  114. for(int i=0; i<255; i++)
  115. {
  116. suma = suma + (i*t2[i]);
  117. }
  118. bg=suma/n;
  119.  
  120.  
  121. suma=0;
  122. for(int i=0; i<255; i++)
  123. {
  124. suma = suma + (i*t3[i]);
  125. }
  126. bb=suma/n;
  127.  
  128.  
  129. suma=0;
  130.  
  131.  
  132.  
  133. suma=0;
  134.  
  135. long double vr, vg, vb;
  136. for(int i=0; i<255; i++)
  137. {
  138. suma = suma + (((i-br)*(i-br))*t[i]);
  139. }
  140. vr=(suma/n);
  141.  
  142. suma=0;
  143. for(int i=0; i<255; i++)
  144. {
  145. suma = suma + (((i-bg)*(i-bg))*t[i]);
  146. }
  147. vg=(suma/n);
  148.  
  149. suma=0;
  150.  
  151. for(int i=0; i<255; i++)
  152. {
  153. suma = suma + (((i-bb)*(i-bb))*t[i]);
  154. }
  155. vb=(suma/n);
  156.  
  157. suma=0;
  158.  
  159.  
  160.  
  161. long double sdr,sdg,sdb;
  162. sdr=sqrt(vr);
  163. sdg=sqrt(vg);
  164. sdb=sqrt(vb);
  165.  
  166. cout<<br<<endl;
  167. cout<<sdr<<endl;
  168. cout<<vr<<endl;
  169. cout<<br+(sdr/4)<<" "<<br-(sdr/4)<<endl;
  170.  
  171. WHOLE_IMAGE_WITHOUT_BORDERS
  172. {
  173. if(image(x,y,z)<(br+(sdr/4)) && image(x,y,z)>(br-(sdr/4)))
  174. { tablica[x][y]=1;
  175. visu(x,y,z)=60;
  176. switch(k)
  177. {
  178. case 0: visu(x,y,z)=50; break;
  179. case 1: visu(x,y,z)=204; break;
  180. case 2: visu(x,y,z)=153; break;
  181. case 3: visu(x,y,z)=102; break;
  182.  
  183. }
  184.  
  185. for(int i=-1;i<2;i++)for(int j=-1;j<2;j++)
  186. {
  187. if(image(x+i,y+j,z)>(br+(sdr/4)) && (i!=0 || j!=0)) {visu(x+i,y+j,z)=255; tablica[x+1][y+j]=1; }
  188. if(image(x+i,y+j,z)<(br-(sdr/4)) && (i!=0 || j!=0)) {visu(x+i,y+j,z)=255; tablica[x+1][y+j]=1;}
  189. }
  190. }
  191. /* if(image(x,y,z)<(br+(sdr/4)) && image(x,y,z)>(br-(sdr/4)))
  192. { tablica[x][y]=1;
  193.  
  194.  
  195. for(int i=-1;i<2;i++)for(int j=-1;j<2;j++)
  196. {
  197. if(image(x+i,y+j,z)>(br+(sdr/4)) && (i!=0 || j!=0)) {image(x+i,y+j,z)=0; tablica[x+1][y+j]=1; }
  198. if(image(x+i,y+j,z)<(br-(sdr/4)) && (i!=0 || j!=0)) {image(x+i,y+j,z)=0; tablica[x+1][y+j]=1;}
  199. }
  200. } */
  201.  
  202. }
  203. } break;
  204.  
  205.  
  206. default: cout<<"Wrong instruction! ";
  207. break;}
  208. CImgDisplay obrazek(visu,"Click a point");
  209. CImgDisplay obrazek2(image,"Click a point");
  210. system("PAUSE");
  211. }
Add Comment
Please, Sign In to add comment