• 大小: 13.35MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-26
  • 语言: C/C++
  • 标签: qt  

资源简介

第一次使用qt在C++上搭建,实现了图像扭曲,供大家学习一下啊

资源截图

代码片段和文件信息


#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define NODEBUG

using namespace std;
using namespace Eigen;
double radial(QPoint a QPoint b)
{
/*caculate the radial basic function */
double r = sqrt((a.x() - b.x())*(a.x() - b.x()) + (a.y() - b.y())*(a.y() - b.y()));
if (r == 0.0)
return 0;
return r*r*log(r) / log(10);
}
QPoint trans(QPoint cor VectorXd A VectorXd B vectorpoint)
{
RowVectorXd g(point.size() + 3);
int i = 0;
for (; i < point.size(); i++)
g[i] = radial(cor point[i]);
g[i] = 1;
g[i + 1] = cor.x();
g[i + 2] = cor.y();
double x = g*A;
double y = g*B;
if (x < 0)x = 0;
if (x > 482)x = 482;
if (y < 0)y = 0;
if (y > 467)y = 467;
return QPoint(x y);

}
int main(int argc char *argv[])
{
QCoreApplication a(argc argv);

QImage source;
source.load(“11.jpg“);
vectorpre_Point = { QPoint(209 175) QPoint(270 174) QPoint(228 222) QPoint(234 248) QPoint(261 244) QPoint(216 246) };
vectorlat_Point = { QPoint(209 175) QPoint(270 174) QPoint(228 222) QPoint(234 248) QPoint(261 251) QPoint(216 251) };
//the equation right vector
VectorXd u;
u = VectorXd::Zero(pre_Point.size() + 3);
VectorXd v;
v = VectorXd::Zero(pre_Point.size() + 3);
// the vector to be solved
VectorXd A(pre_Point.size() + 3);
VectorXd B(pre_Point.size() + 3);
//define a radial function matrix between control points
MatrixXd cof_f(pre_Point.size() pre_Point.size());
for (int i = 0; i < pre_Point.size(); i++)
for (int j = 0; j < pre_Point.size(); j++)
cof_f(i j) = radial(pre_Point[i] pre_Point[j]);
cout << cof_f << endl;
MatrixXd Gtem(pre_Point.size() 3);
for (int i = 0; i < pre_Point.size(); i++)
{
Gtem(i 0) = 1;
Gtem(i 1) = pre_Point[i].x();
Gtem(i 2) = pre_Point[i].y();
u[i] = lat_Point[i].x();
v[i] = lat_Point[i].y();
}
cout << Gtem << endl;
//the final coffient matrix;
MatrixXd G(pre_Point.size() + 3 pre_Point.size() + 3);
G.topLeftCorner(pre_Point.size() pre_Point.size()) = cof_f;
G.topRightCorner(pre_Point.size() 3) = Gtem;
G.bottomLeftCorner(3 pre_Point.size()) = Gtem.transpose();
G.bottomRightCorner(3 3) = MatrixXd::Zero(3 3);

cout << G << endl;
cout << u << endl;
cout << v << endl;
A = G.inverse()*u;
B = G.inverse()*v;
cout << A;
cout << B;
cout << G*A;

QPoint test = trans(QPoint(0 0) A B pre_Point);
cout << test.x() << “  “ << test.y();

/*assign the space for the cordinate and assign the value*/
/*
vector>cor;
cor.resize(source.height());
for (int i = 0; i < cor.size(); i++)
cor[i].resize(source.width());
for (int i = 0; i < source.height(); i++)
for (int j = 0; j < source.width(); j++)
cor[i][j] = QPoint(j  i);
*/
/*
vector>res;
re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-11-29 21:33  Warping - 副本\
     目录           0  2017-11-29 21:33  Warping - 副本\Warping\
     目录           0  2017-11-29 21:33  Warping - 副本\Warping\Debug\
     文件        4836  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.log
     目录           0  2017-11-29 21:33  Warping - 副本\Warping\Debug\Warping.tlog\
     文件       63360  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\CL.read.1.tlog
     文件        1608  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\CL.write.1.tlog
     文件         155  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\Warping.lastbuildstate
     文件        4070  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\cl.command.1.tlog
     文件        1576  2017-11-29 21:12  Warping - 副本\Warping\Debug\Warping.tlog\custombuild.command.1.tlog
     文件         404  2017-11-29 21:12  Warping - 副本\Warping\Debug\Warping.tlog\custombuild.read.1.tlog
     文件         638  2017-11-29 21:12  Warping - 副本\Warping\Debug\Warping.tlog\custombuild.write.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link-cvtres.read.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link-cvtres.write.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link-rc.read.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link-rc.write.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link.command.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link.read.1.tlog
     文件           2  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\link.write.1.tlog
     文件           0  2017-11-29 21:29  Warping - 副本\Warping\Debug\Warping.tlog\unsuccessfulbuild
     文件     3003785  2017-11-29 21:29  Warping - 副本\Warping\Debug\main.obj
     文件      250870  2017-11-29 21:29  Warping - 副本\Warping\Debug\moc_warping.obj
     文件        4718  2017-11-29 21:29  Warping - 副本\Warping\Debug\qrc_warping.obj
     文件     5844992  2017-11-29 21:29  Warping - 副本\Warping\Debug\vc120.pdb
     文件      280581  2017-11-29 21:29  Warping - 副本\Warping\Debug\warping.obj
     目录           0  2017-11-29 21:33  Warping - 副本\Warping\GeneratedFiles\
     目录           0  2017-11-29 21:33  Warping - 副本\Warping\GeneratedFiles\Debug\
     文件        2659  2017-11-29 21:12  Warping - 副本\Warping\GeneratedFiles\Debug\moc_warping.cpp
     目录           0  2017-11-29 22:46  Warping - 副本\Warping\GeneratedFiles\Release\
     文件        1396  2017-11-29 20:51  Warping - 副本\Warping\GeneratedFiles\qrc_warping.cpp
     文件        2227  2017-11-29 20:51  Warping - 副本\Warping\GeneratedFiles\ui_warping.h
............此处省略15个文件信息

评论

共有 条评论