作为代码界的菜鸟,最近在尝试着用vs实现《数字图像处理与机器视觉》一书中有关图像处理的VC++代码。目前先从简单的图像几何变换做起,希望能记录自己的成长^_^
本篇是图像转置变换的实现。
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
using namespace std;
using namespace cv;
/********************************************
void transpose(Mat img,Mat &dst)
功能: 图像的转置
注: 图像水平竖直方向互换
参数: Mat img: 原图
Mat dst: 转置变换后图像
返回值: 无
*********************************************/
void transpose(Mat img, Mat &dst)
{
int nH = img.rows;
int nW = img.cols;
int i, j;
dst.create(nW, nH, img.type());
for (i = 0; i < nW; i++)
{
for (j = 0; j < nH; j++)
{
dst.at<Vec3b>(i, j) = img.at<Vec3b>(j, i);
}
}
}
int main()
{
Mat img = imread("1.jpg");
Mat dst;
transpose(img, dst);
imshow("转置变换", dst);
waitKey(0);
return 0;
}
结果图如下: