zoukankan      html  css  js  c++  java
  • Opencv— — image offset

    
    // define head function
    #ifndef PS_ALGORITHM_H_INCLUDED
    #define PS_ALGORITHM_H_INCLUDED
    
    #include <iostream>
    #include <string>
    #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
    
    /*
    Image offset.
    */
    
    #include "PS_Algorithm.h"
    
    int main()
    {
        string  Image_name("4.jpg");
        Mat Img=imread(Image_name.c_str());
        Mat Img_out(Img.size(), CV_8UC3);
    
        int warp, xOffset, yOffset;
        xOffset=150;
        yOffset=100;
        warp=1;
    
        int width=Img.cols;
        int height=Img.rows;
    
        if (warp)
        {
            while(xOffset<0)
            xOffset=xOffset+width;
    
            while(yOffset<0)
            yOffset=yOffset+height;
    
            xOffset=xOffset%width;
            yOffset=yOffset%height;
        }
    
        int new_x, new_y;
    
         for (int y=0; y<height; y++)
        {
            for (int x=0; x<width; x++)
            {
                if(warp)
                {
                    new_x=(x+width-xOffset)%width;
                    new_y=(y+height-yOffset)%height;
                }
                else
                {
                    new_x=x-xOffset;
                    new_y=y-yOffset;
                }
    
                if(new_x<0)         new_x=0;
                if(new_x>=width-1)  new_x=width-2;
                if(new_y<0)         new_y=0;
                if(new_y>=height-1) new_y=height-2;
    
    
                for (int k=0; k<3; k++)
                {
                    Img_out.at<Vec3b>(y, x)[k]=Img.at<Vec3b>(new_y, new_x)[k];
    
                }
    
            }
    
        }
    
    
        Show_Image(Img_out, "New_img");
    
       // cout<<"All is well."<<endl;
       // cout<<xOffset<<endl;
       // cout<<yOffset<<endl;
        waitKey();
    }
    
    
    // define the show image
    #include "PS_Algorithm.h"
    #include <iostream>
    #include <string>
    
    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);
    
    }
    
    

    图像效果可以参考:

    http://blog.csdn.net/matrix_space/article/details/46790011

  • 相关阅读:
    javascript模块化进阶
    javascript模块化基础
    css架构探索
    javascript函数基础概念 (补充完结)
    聊聊圣杯布局
    javascript函数基础概念
    yum提示This system is not registered with RHN.RHN support will be disabled.
    Linux分区和挂载硬盘
    Thunderbird扩展
    yum install nginx
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412529.html
Copyright © 2011-2022 走看看