资源简介

根据自定义的单应变换矩阵,对图像进行单应变换,其实不光是单应变换,通过自己设定变换矩阵H,根据xH=x‘,可以进行任意变换,注意变换矩阵不要设定的太离谱

资源截图

代码片段和文件信息

// create_homo.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include “opencv2/opencv.hpp“
using namespace std;
using namespace cv;

int main()
{
Mat mImage;
string filename;
cout << “please input the image file‘s name(no need .jpg):“;
cin >> filename;
filename += “.jpg“;
mImage = imread(filename0);
if (mImage.empty())
{
cout << “image read wrong !!“ << endl;
system(“pause“);
return 0;
}
//顺时针旋转5度,平移x方向25个像素
Mat h(3 3CV_32FC1);
h.at(0 0) = 0.996;
h.at(0 1) = -0.087;
h.at(0 2) = 0;
h.at(1 0) = 0.087;
h.at(1 1) = 0.996;
h.at(1 2) = -25;
h.at(2 0) = 0;
h.at(2 1) = 0;
h.at(2 2) = 1;
//h = h.t();
Mat h_inv = h;// .inv();
//h_inv = h_inv.t();
cout << “h:“ << endl << h << endl;
//cout << “h_inv:“ << endl << h_inv << endl;
//cout << “h_inv*h:“ << endl << h_inv*h << endl;

Mat result_Image = Mat::zeros(mImage.rowsmImage.colsmImage.type());//先全部置零
float u = 0v = 0;//i,j就是变换后图像上的点;u,v就是原图像上的点
for (int i = 0; i < result_Image.rows; i++)
{
for (int j = 0; j < result_Image.cols; j++)
{
u = h_inv.at(0 0)*i + h_inv.at(0 1)*j + h_inv.at(0 2);//cols
v = h_inv.at(1 0)*i + h_inv.at(1 1)*j + h_inv.at(1 2);//rows
if (u>-1 && v>-1 && int(u+0.5) < mImage.rows&&int(v+0.5) < mImage.cols)//找到对应的原图像上的点是在原图像范围内
{
if (float(u-int(u))<0.5)
{
if (float( v - int(v)) < 0.5)
//1象限
result_Image.at(i j) = mImage.at(int(u) int(v));
else
//2象限
result_Image.at(i j) = mImage.at(int(u+0.5) int(v));
}
else
{
if (float(v - int(v)) < 0.5)
//3象限
result_Image.at(i j) = mImage.at(int(u+0.5) int(v+0.5));
else
//4象限
result_Image.at(i j) = mImage.at(int(u) int(v+0.5));
}
//result_Image.at(i j) = mImage.at(int(u) int(v));
//result_Image.at(i j) = ( mImage.at(int(u) int(v)) + mImage.at(int(u + 0.5) v) + mImage.at(int(u) int(v + 0.5)) + mImage.at(int(u+0.5) int(v+0.5)) )/4;
}
}
}
imshow(“origin“ mImage);
imshow(“result“ result_Image);
imwrite(“image_o.jpg“ mImage);
imwrite(“image_r.jpg“ result_Image);
waitKey(0);
return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-06-07 15:04  create_homo\
     目录           0  2017-07-11 20:32  create_homo\create_homo\
     目录           0  2017-07-11 18:50  create_homo\create_homo\Debug\
     文件       26907  2016-11-18 20:27  create_homo\create_homo\Debug\01.jpg
     文件       27118  2017-07-05 14:58  create_homo\create_homo\Debug\1image_o.jpg
     文件       28810  2017-07-05 14:58  create_homo\create_homo\Debug\1image_r.jpg
     文件       27118  2017-07-05 16:01  create_homo\create_homo\Debug\2image_o.jpg
     文件       25553  2017-07-05 16:01  create_homo\create_homo\Debug\2image_r.jpg
     文件       90112  2017-07-11 18:50  create_homo\create_homo\Debug\create_homo.exe
     文件      536036  2017-07-11 18:50  create_homo\create_homo\Debug\create_homo.ilk
     文件     1838080  2017-07-11 18:50  create_homo\create_homo\Debug\create_homo.pdb
     文件          29  2017-07-04 17:34  create_homo\create_homo\Debug\h.txt
     文件       27118  2017-07-11 18:50  create_homo\create_homo\Debug\image_o.jpg
     文件       27542  2017-07-11 18:50  create_homo\create_homo\Debug\image_r.jpg
     目录           0  2017-07-11 18:50  create_homo\create_homo\create_homo\
     目录           0  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\
     文件        1401  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.Build.CppClean.log
     文件        3135  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.log
     文件      354743  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.obj
     文件     1638400  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.pch
     目录           0  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\
     文件       19692  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\CL.read.1.tlog
     文件        1642  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\CL.write.1.tlog
     文件        1726  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\cl.command.1.tlog
     文件         194  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\create_homo.lastbuildstate
     文件        2456  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\link.command.1.tlog
     文件        6088  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\link.read.1.tlog
     文件         880  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\create_homo.tlog\link.write.1.tlog
     文件       12055  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\stdafx.obj
     文件      592896  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\vc120.idb
     文件     1454080  2017-07-11 18:50  create_homo\create_homo\create_homo\Debug\vc120.pdb
............此处省略13个文件信息

评论

共有 条评论