OpenCV——PS 滤镜算法之平面坐标到极坐标的变换

// define head function
#ifndef PS_ALGORITHM_H_INCLUDED
#define PS_ALGORITHM_H_INCLUDED

#include 
#include 
#include "cv.h"
#include "highgui.h"
#include "cxmat.hpp"
#include "cxcore.hpp"
#include "math.h"

using namespace std;
using namespace cv;

void Show_Image(Mat&, const string &);

#endif // PS_ALGORITHM_H_INCLUDED

/*
This program will transform from the 
orthogonal to polar coordinate.

*/


#include "PS_Algorithm.h"
#include 

using namespace std;
using namespace cv;

#define pi 3.1415926

int main()
{
    string Img_name("4.jpg");
    Mat Img;
    Img=imread(Img_name);
    Show_Image(Img, Img_name);

    Mat Img_in(Img.size(), CV_32FC3);
    Img.convertTo(Img_in, CV_32FC3);
    // Show_Image(Img_in, "in");

    Mat Img_out(Img_in.size(), CV_32FC3);
    Img_in.convertTo(Img_out, CV_32FC3);

    int width=Img_in.cols;
    int height=Img_in.rows;

    float R;
    float e;

    e=(float)width/(float)height;
    R=(float)height/2.0;

    Point Center(width/2, height/2);

    float R1, new_x, new_y;
    float p,q,x1,y1;
    float theta;

    for (int y=0; ywidth-1)  new_x=width-2;
                if(new_y<0)        new_y=0;
                if(new_y>height-1) new_y=height-2;

                x1=(int)new_x;
                y1=(int)new_y;

                p=new_x-x1;
                q=new_y-y1;

            for (int k=0; k<3; k++)
            {
                Img_out.at(y, x)[k]=(1-p)*(1-q)*Img_in.at(y1, x1)[k]+
                                            (p)*(1-q)*Img_in.at(y1,x1+1)[k]+
                                            (1-p)*(q)*Img_in.at(y1+1,x1)[k]+
                                            (p)*(q)*Img_in.at(y1+1,x1+1)[k];
            }

        }
    }

    Img_out=Img_out/255.0;
    Show_Image(Img_out, "out");

    imwrite("Out.jpg", Img_out*255);


    waitKey();

}


// define the show image
#include "PS_Algorithm.h"
#include 
#include 

using namespace std;
using namespace cv;

void Show_Image(Mat& Image, const string& str)
{
    namedWindow(str.c_str(),CV_WINDOW_AUTOSIZE);
    imshow(str.c_str(), Image);

}



原图 

OpenCV——PS 滤镜算法之平面坐标到极坐标的变换_第1张图片

效果图

OpenCV——PS 滤镜算法之平面坐标到极坐标的变换_第2张图片

转载于:https://www.cnblogs.com/mtcnn/p/9412580.html

你可能感兴趣的:(OpenCV——PS 滤镜算法之平面坐标到极坐标的变换)