Opencv— — image offset

Posted Matrix_11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Opencv— — image offset的主要内容,如果未能解决你的问题,请参考以下文章

opencv的一些函数——contours

python opencv error “parallel_impl.cpp (240) WorkerThread 155: Can‘t spawn new thread: res = 11“(代码片

OpenCV 转换为()

opencv cv.findContours 函数详解 图像轮廓层级 图像轮廓检索方式详解

简单拼接图像的tile_images和tile_images_offset算子

以代码为基础的opencv-python学习 图像模糊