图像镜像变换

作为代码界的菜鸟,最近在尝试着用vs实现《数字图像处理与机器视觉》一书中有关图像处理的VC++代码。目前先从简单的图像几何变换做起,希望能记录自己的成长^_^
本篇是实现图像的镜像变换,包括水平镜像和垂直镜像。

#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;
/********************************************
void Mat horMirror(Mat img,Mat &dst)
功能: 图像的水平镜像
注: 图像左右镜像
参数: Mat img: 原图
      Mat dst: 水平镜像变换后图像
返回值: 无
*********************************************/
void horMirror(Mat img, Mat &dst)
{
    int nH = img.rows;
    int nW = img.cols;
    int i, j, u;
    for (i = 0; i < nW; i++)
    {
        u = nW - i - 1;
        for (j = 0; j < nH; j++)
        {
            dst.at(j, i) = img.at(j, u);
        }
    }
}
/********************************************
void Mat verMirror(Mat img,Mat &dst)
功能: 图像的垂直镜像
注: 图像上下镜像
参数: Mat img: 原图
      Mat dst: 垂直镜像变换后图像
返回值: 无
*********************************************/
void verMirror(Mat img, Mat &dst)
{
    int nH = img.rows;
    int nW = img.cols;
    int i, j, u = 0;
    for (i = 0; i < nH; i++)
    {
        u = nH - i - 1;
        for (j = 0; j < nW; j++)
            dst.at(i, j) = img.at(u, j);
    }
}
int main()
{
    Mat img = imread("1.jpg");
    imshow("原图", img);
    Mat dst=img.clone();    
    //水平镜像变换
    horMirror(img, dst);
    imshow("水平镜像变换", dst);
    //垂直镜像变换
    verMirror(img, dst);
    imshow("垂直镜像变换", dst);
}

结果图如下:
图像镜像变换_第1张图片
图像镜像变换_第2张图片
图像镜像变换_第3张图片

你可能感兴趣的:(数字图像处理)