Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. Mat Tools::rowWiseZooming(Mat inM,int k){
  2. //inM.convertTo(inM, CV_32F, 1.0/255.0);
  3. Mat dst=Mat(inM.rows,inM.cols+(inM.cols-1)*(k-1),CV_32F,int(0));;
  4.  
  5. int s=0,l=0;
  6. int op=0;
  7. int toggleSort=0;
  8. for(int i=0;i<inM.rows;i++){
  9. for(int j=0;j<inM.cols-1;j++){
  10. dst.at<int>(i,l)=inM.at<int>(i,j);
  11.  
  12. int Min=minInt(inM.at<int>(i,j),inM.at<int>(i,j+1));
  13. int Max=maxInt(inM.at<int>(i,j),inM.at<int>(i,j+1));
  14. op=(int)(Max-Min)/k;
  15.  
  16. if(toggleSort==0){
  17. dst.at<int>(i,l+1)=Min+op;
  18. for(int t=1;t<k-1;t++){
  19. dst.at<int>(i,l+t+1)=dst.at<int>(i,l+t)+op;
  20. }
  21. toggleSort=1;
  22. }else{
  23. dst.at<int>(i,l+1)=Max-op;
  24. for(int t=1;t<k-1;t++){
  25. dst.at<int>(i,l+t+1)=dst.at<int>(i,l+t)-op;
  26. }
  27. toggleSort=0;
  28. }
  29. dst.at<int>(i,l+k)=inM.at<int>(i,j+1);l+=k;
  30.  
  31. }l=0;toggleSort=1;
  32. }
  33.  
  34. return dst;
  35. }
  36.  
  37. Mat Tools::colWiseZooming(Mat inM,int k){
  38. Mat dst=Mat(inM.rows+(inM.rows-1)*(k-1),inM.cols,CV_32F,int(0));
  39.  
  40. int s=0,l=0;
  41. int op=0;
  42. int toggleSort=0;
  43. for(int j=0;j<inM.cols;j++){
  44. for(int i=0;i<inM.rows-1;i++){
  45. dst.at<int>(s,j)=inM.at<int>(i,j);
  46. int Min=minInt(inM.at<int>(i,j),inM.at<int>(i+1,j));
  47. int Max=maxInt(inM.at<int>(i,j),inM.at<int>(i+1,j));
  48. op=(int)(Max-Min)/k;
  49.  
  50.  
  51. dst.at<int>(s+1,j)=Min+op;
  52. for(int t=1;t<k-1;t++){
  53. dst.at<int>(s+t+1,j)=dst.at<int>(s+t,j)+op;
  54. }
  55.  
  56.  
  57.  
  58. dst.at<int>(s+k,j)=inM.at<int>(i+1,j);s+=k;
  59.  
  60. }s=0;
  61. }
  62. return dst;
  63. }
  64.  
  65. Mat Tools::zoomIn(Mat img,int k){
  66. Mat imgC;
  67. img.copyTo(imgC);
  68. img.convertTo(imgC, CV_32F, 1.0/255.0);
  69. Mat inM=rowWiseZooming(imgC,k);
  70.  
  71.  
  72. Mat dst=colWiseZooming(inM,k);
  73.  
  74. dst.convertTo(dst, CV_8UC1, 255.0/1.0);
  75. return dst;
  76. }
  77.  
  78.  
  79. Mat Tools::colWiseZoomingOut(Mat inM,int k){
  80. Mat dst=Mat((int)((inM.rows-1)/k)+1,inM.cols,CV_32F,int(0));
  81.  
  82. for(int i=0,s=0;i<inM.rows;i+=k,s++){
  83. for(int j=0;j<inM.cols;j++){
  84. dst.at<int>(s,j)=inM.at<int>(i,j);
  85. }
  86. }
  87. return dst;
  88. }
  89.  
  90. Mat Tools::rowWiseZoomingOut(Mat inM,int k){
  91. Mat dst=Mat(inM.rows,(int)((inM.cols-1)/k)+1,CV_32F,int(0));
  92.  
  93. for(int i=0;i<inM.rows;i++){
  94. for(int j=0,l=0;j<inM.cols;j+=k,l++){
  95. dst.at<int>(i,l)=inM.at<int>(i,j);
  96. }
  97. }
  98. return dst;
  99. }
  100.  
  101. Mat Tools::zoomOut(Mat img,int k){
  102. Mat imgC;
  103. img.copyTo(imgC);
  104. img.convertTo(imgC, CV_32F, 1.0/255.0);
  105. Mat inM=colWiseZoomingOut(imgC,k);
  106.  
  107. Mat dst=rowWiseZoomingOut(inM,k);
  108.  
  109. dst.convertTo(dst, CV_8UC1, 255.0/1.0);
  110. return dst;
  111. }
  112.  
  113. Mat Tools::zoomInFactor(Mat img, int k, int factor){
  114. if(factor==0)return img;
  115. if(factor<0)return zoomOutFactor(img,k,factor);
  116. Mat dst=zoomIn(img,k);
  117. for(int i=1;i<factor;i++){
  118. dst=zoomIn(dst,k);
  119. }
  120. return dst;
  121. }
  122.  
  123. Mat Tools::zoomOutFactor(Mat img, int k, int factor){
  124. if(factor==0)return img;
  125. if(factor>0)return zoomInFactor(img,k,factor);
  126. Mat dst=zoomOut(img,k);
  127. for(int i=1;i<abs(factor);i++){
  128. dst=zoomOut(dst,k);
  129. }
  130. return dst;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement