资源简介
根据自定义的单应变换矩阵,对图像进行单应变换,其实不光是单应变换,通过自己设定变换矩阵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\li
文件 6088 2017-07-11 18:50 create_homo\create_homo\create_homo\Debug\create_homo.tlog\li
文件 880 2017-07-11 18:50 create_homo\create_homo\create_homo\Debug\create_homo.tlog\li
文件 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个文件信息
- 上一篇:iperf vs2010工程编译
- 下一篇:smpte各种标准
评论
共有 条评论