程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> OpenCV——Skewing

OpenCV——Skewing

編輯:關於C++
// 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


#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);

    float theta=pi/6;

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

    /*
    // horizontal skewing
    int new_height=height;
    int new_width=width+height*tan(theta)+1;
    Mat Img_H=Mat::zeros(new_height,new_width, CV_8UC3);

    float Dis;
    float new_x, new_y;
    float x1, y1, p;
    for (int y=0; ywidth-1) new_x=width-2;

          if (new_x>0 && new_x(y,x)[0]=(1-p)*Img.at(y1,x1)[0]+p*Img.at(y1,x1+1)[0];
                Img_H.at(y,x)[1]=(1-p)*Img.at(y1,x1)[1]+p*Img.at(y1,x1+1)[1];
                Img_H.at(y,x)[2]=(1-p)*Img.at(y1,x1)[2]+p*Img.at(y1,x1+1)[2];

          }

        }
    }
    Show_Image(Img_H, "out");
    imwrite("H.jpg", Img_H);
    */


    // vertical skewing
    int new_height=height+width*tan(theta)+1;
    int new_width=width;
    Mat Img_V=Mat::zeros(new_height,new_width, CV_8UC3);

    float Dis;
    float new_x, new_y;
    float x1, y1, p;
    for (int y=0; y0 && new_y(y,x)[0]=(1-p)*Img.at(y1,x1)[0]+p*Img.at(y1+1,x1)[0];
                Img_V.at(y,x)[1]=(1-p)*Img.at(y1,x1)[1]+p*Img.at(y1+1,x1)[1];
                Img_V.at(y,x)[2]=(1-p)*Img.at(y1,x1)[2]+p*Img.at(y1+1,x1)[2];

          }

        }
    }
    Show_Image(Img_V, "out");
    imwrite("V.jpg", Img_V);


    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);

}

原圖

\

效果圖

\

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved