Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Mat Tools::rowWiseZooming(Mat inM,int k){
- //inM.convertTo(inM, CV_32F, 1.0/255.0);
- Mat dst=Mat(inM.rows,inM.cols+(inM.cols-1)*(k-1),CV_32F,int(0));;
- int s=0,l=0;
- int op=0;
- int toggleSort=0;
- for(int i=0;i<inM.rows;i++){
- for(int j=0;j<inM.cols-1;j++){
- dst.at<int>(i,l)=inM.at<int>(i,j);
- int Min=minInt(inM.at<int>(i,j),inM.at<int>(i,j+1));
- int Max=maxInt(inM.at<int>(i,j),inM.at<int>(i,j+1));
- op=(int)(Max-Min)/k;
- if(toggleSort==0){
- dst.at<int>(i,l+1)=Min+op;
- for(int t=1;t<k-1;t++){
- dst.at<int>(i,l+t+1)=dst.at<int>(i,l+t)+op;
- }
- toggleSort=1;
- }else{
- dst.at<int>(i,l+1)=Max-op;
- for(int t=1;t<k-1;t++){
- dst.at<int>(i,l+t+1)=dst.at<int>(i,l+t)-op;
- }
- toggleSort=0;
- }
- dst.at<int>(i,l+k)=inM.at<int>(i,j+1);l+=k;
- }l=0;toggleSort=1;
- }
- return dst;
- }
- Mat Tools::colWiseZooming(Mat inM,int k){
- Mat dst=Mat(inM.rows+(inM.rows-1)*(k-1),inM.cols,CV_32F,int(0));
- int s=0,l=0;
- int op=0;
- int toggleSort=0;
- for(int j=0;j<inM.cols;j++){
- for(int i=0;i<inM.rows-1;i++){
- dst.at<int>(s,j)=inM.at<int>(i,j);
- int Min=minInt(inM.at<int>(i,j),inM.at<int>(i+1,j));
- int Max=maxInt(inM.at<int>(i,j),inM.at<int>(i+1,j));
- op=(int)(Max-Min)/k;
- dst.at<int>(s+1,j)=Min+op;
- for(int t=1;t<k-1;t++){
- dst.at<int>(s+t+1,j)=dst.at<int>(s+t,j)+op;
- }
- dst.at<int>(s+k,j)=inM.at<int>(i+1,j);s+=k;
- }s=0;
- }
- return dst;
- }
- Mat Tools::zoomIn(Mat img,int k){
- Mat imgC;
- img.copyTo(imgC);
- img.convertTo(imgC, CV_32F, 1.0/255.0);
- Mat inM=rowWiseZooming(imgC,k);
- Mat dst=colWiseZooming(inM,k);
- dst.convertTo(dst, CV_8UC1, 255.0/1.0);
- return dst;
- }
- Mat Tools::colWiseZoomingOut(Mat inM,int k){
- Mat dst=Mat((int)((inM.rows-1)/k)+1,inM.cols,CV_32F,int(0));
- for(int i=0,s=0;i<inM.rows;i+=k,s++){
- for(int j=0;j<inM.cols;j++){
- dst.at<int>(s,j)=inM.at<int>(i,j);
- }
- }
- return dst;
- }
- Mat Tools::rowWiseZoomingOut(Mat inM,int k){
- Mat dst=Mat(inM.rows,(int)((inM.cols-1)/k)+1,CV_32F,int(0));
- for(int i=0;i<inM.rows;i++){
- for(int j=0,l=0;j<inM.cols;j+=k,l++){
- dst.at<int>(i,l)=inM.at<int>(i,j);
- }
- }
- return dst;
- }
- Mat Tools::zoomOut(Mat img,int k){
- Mat imgC;
- img.copyTo(imgC);
- img.convertTo(imgC, CV_32F, 1.0/255.0);
- Mat inM=colWiseZoomingOut(imgC,k);
- Mat dst=rowWiseZoomingOut(inM,k);
- dst.convertTo(dst, CV_8UC1, 255.0/1.0);
- return dst;
- }
- Mat Tools::zoomInFactor(Mat img, int k, int factor){
- if(factor==0)return img;
- if(factor<0)return zoomOutFactor(img,k,factor);
- Mat dst=zoomIn(img,k);
- for(int i=1;i<factor;i++){
- dst=zoomIn(dst,k);
- }
- return dst;
- }
- Mat Tools::zoomOutFactor(Mat img, int k, int factor){
- if(factor==0)return img;
- if(factor>0)return zoomInFactor(img,k,factor);
- Mat dst=zoomOut(img,k);
- for(int i=1;i<abs(factor);i++){
- dst=zoomOut(dst,k);
- }
- return dst;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement